Hey all!
I know I haven't posted in a while, but after a long break I finally had a free weekend and was able to work on a side project (my first one in over a year! Don't believe the gatekeepers, you can have a successful career without side projects!)
It all started a few weeks ago when I was feeling down and felt like I could really use a hug.
Not being close to anyone with whom I'm friends on a hugging basis, I did the next best thing and turned to Twitter:
Sometime later, I was tweeting with a friend who was feeling down, and they mentioned that they could use a hug as well. I immediately sent them a (virtual) hug as well. And the idea came up for a bot that would help people feeling down by sending hugs at them!
I'm no stranger to Twitter bots, having written one some time ago:
This time I decided to write one in Python.
Python has a great library for interacting with Twitter called tweepy, and even a library around Giphy that makes things like getting a random gif of a hug pretty straightforward!
Between those two libraries, I didn't have to write much code on my own. The whole bot is about 35 lines of code!
I followed this dev.to post by @emcain for instructions on how to get my bot set up on Heroku:
How to Set up a Twitter Bot with Python and Heroku
Emily Cain ・ Jun 24 '18
And by the end of the weekend, @ICanHazHugzPlz was born!
Scope Reduction
Of course, no project comes out the way you expect it.
I had initially envisioned that the bot would reply to people asking it for hugs with a gif of a hug.
It turns out that to implement that, I would have to work out a queue that could keep track of which tweets the bot already replied to. That queue would need to maintain state between restarts; otherwise, the bot would keep spamming anyone who tweeted at it every time the script restarts (multiple times a day on Heroku's free dyno), as my bots earliest followers found out the hard way (sorry!!!)
I wasn't planning on spending more than a weekend on the project, so in the end, I settled on a bot that tweets a hug at the world every few hours.
Show Me The Code!
If you would like to take a look at the code for the bot, you'll find it here (including the failed implementation of the replying version of the bot on a separate branch):
achasveachas / hug-bot
A twitter bot that gives out free hugs.
Hug Bot
Hug Bot is a Bluesky bot (it was originally written as a Twitter bot) written in Python that posts a random hug gif every few hours.
You can follow @hugbot.bsky.social on Bluesky for all your huggy needs.
License
This bot is licensed under the MIT license.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/achasveachas/hug-bot/issues.
This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
Contact
Feel free to get in touch with me if you have any suggestions or comments at yechiel.me
And of course, if you'd like to bless your Twitter timeline with wholesome hugs, please give my bot a follow at @ICanHazHugzPlz!
Until next time!
Top comments (12)
"I just took a DNA tet, turns out I'm 100% hugs!" should be DNA test. Very cool project!
Lol whoops, good catch! I'll fix it tonight.
But you can submit a PR before I get around to it if you'd like 😊
I used @emcain ’s tutorial too! I love your bot! Hugs for making a hugs bot!!! 🤗 🤗
I know! I got it from your README 😂
Hugs back! 🤗
Oh! The benefits of documentation. Glad I could help. 🤗
Never underestimate the power of a great README!
I love this entirely too much!
But is it really too much? 🤗
Haha this is awesome!
Thanks! 🤗
I'm so glad I could help 💖 your hug bot is lovely!
Thank you! 🤗