2026-09-26

imood time! (telegram bot)

What if I log my moods every day?

I think the reason why I never make it a habit is that I don't often share them with others. I didn't have motivation to do this. But now I found my motivations! I hope this habit can bring good care to my mental health, and I do want to express myself on my homepage where visitors are more ready to listen to me.

full_imood_status_on_wall.png
full_imood_status_on_wall.png

Choosing what my current mood is before bed encourages me to recall my day. That's a good chance to identify what events most influence my mood. So I can learn from those experiences to try to do some things or avoid other things to keep my mood more positive.

Everyone is different — the answer can only be found by themselves. And I want to share the tool I made for myself to maintain my daily-mood-logging habit with imood.com. Maybe it can inspire someone to make tool for themselves. I hope you are happy or you can be happy!

---

Actually imood has already made an updater extension for the browser, but during the time before I go to bed, I only use my phone and kindle. So I tried to build a telegram bot to make it also easy to update on phone.

I use cron-job.org (low-latency) to hit my bot's reminder endpoint, which then pings me on telegram. And then I can directly click that notification to open the bot to update my mood, check status of the buddies (who I followed), and my recent mood history (telegram has char limit on each msg).

I also set up some commands to help users input a msg which meets the update format, like showing the reference grid for face ids (made by me), checking the official imood list of available moods, and checking additional custom moods translation txt file stored at the backend as I'm not an English speaker.

imood_faces_grid.png
imood_faces_grid.png

Note: I vibe-coded the backend server to run all the functions since I haven't built a solid foundation in programming languages. I can only test the outputs of LLMs in loop to make a usable tool. And if you're still interested in checking the code, here's the repo! I've tried to make it easy to set up as your own tool. (the bot will only serve you, and is only controlled by you, by designe) And I will explain more about what this bot does below.

---


Imood Time! Explanation


Imood Time Alert

"log mood at least once before bed" is my alert msg, it will be sent by imood time! at 11:30 pm every day.

Of course you can customize both alert msg and schedule of the cron job.



Update Format

mood mood details #face id
(pls separate each two parameters with a space)

show_profile_link_preview_after_update.PNG
show_profile_link_preview_after_update.PNG

So in snapshot above as an example:

Make sure that both the mood and the #face id you type already exist in imood's lists
(you can check them via commands or use scripts that will return lists at xml.imood.org)

And you'll get "imood updated!" msg with the updated preview of your profile link
(by default, tg caches the link previews, but I made it update for verifying the updates)



Commands

Here's everything the bot can do for you:

/start — display commands' overview
/faces — download reference grid for face ids (0–32)
/moods — open official imood list on imood.com/moods
/buddies — view current moods of all your buddies
/history — view your recent 16 imood logs (consider the limit and custom for yourself)
/translation — view translation of available moods (it's optional)



Bonus: Fetch Mood Detail to Homepage

So far imood has provided XML scripts to help users customize their webpages. I originally used them for easy updating status on telegram, but later I found that I can use the server I've built for that purpose to serve the request from my homepage. (check ROUTE 1.5 in webhook.js) I'm happy with the whole flow.

<a id="imood-base" href="https://www.imood.com/users/h80h" target="_blank"><img src="https://moods.imood.com/display/uname-h80h/fg-808080/bg-E6E6FA/imood.gif" alt="The current mood of h80h at www.imood.com"></a> <div id="imood-personal"></div>
#imood-personal { border: 0; } .imood-personal-text { font-size: 15px; letter-spacing: -0.5px; font-family: monospace; margin-top: 10px; width: 250px; color: #808080; filter: opacity(0.6); } #imood-base { border: 0; } #imood-base img { border: 0.5px solid #d3d3d3; border-radius: 2px; transform: scale(1.4); margin-left: 10px; filter: opacity(0.8); }
async function loadImoodStatus() { try { const response = await fetch( "https://imood-tg-bot.vercel.app/api/webhook?action=status", ); // you need to fetch from your backend server const { base, personal } = await response.json(); if (base) { const badge = document.querySelector("#imood-personal"); if (badge) { const statusDiv = document.createElement("div"); statusDiv.textContent = personal ? personal : base; statusDiv.classList.add("imood-personal-text"); badge.insertAdjacentElement("afterbegin", statusDiv); } } } catch (err) { console.error("Failed to fetch imood data:", err); } } loadImoodStatus();