(Epic icon by @AdriTheDreamer)
On9 Word Chain Bot hosts games of word chain in Telegram groups.
- On9 Word Chain Bot (Live Version)
- Official Group
- Word Additions Channel
Python 3.10+
PostgreSQL 11+
2 Telegram bots
It is highly recommended that you turn off privacy mode for On9 Word Chain Bot via @BotFather, which is on by default. Otherwise, leaving privacy mode on, the bot will only receive players' answers when they reply to the bot.
Copy config.json.template to config.json, then edit the following constants in config.json:
TOKEN*: A Telegram bot token.ON9BOT_TOKEN*: Another Telegram bot token for the virtual player bot.DB_URI: A PostgresSQL database URI.PROVIDER_TOKEN*#: A Telegram payment provider token.OWNER_ID: Telegram user id of the bot owner.ADMIN_GROUP_ID^: Telegram group id of the bot admin group. Error messages and word addition requests are sent here.OFFICIAL_GROUP_ID^: Telegram group id of the official group of the bot.WORD_ADDITION_CHANNEL_ID^: Telegram channel id of the channel to announce word additions.VIP: A list of Telegram user ids designated as VIPs.VIP_GROUP: A list of Telegram group ids designated as VIP groups.
*: Obtained via BotFather.
#: Optional if payment-related functions are commented out.
^: Set to the same throwaway group if these features are not used.
Create the required tables in your PostgreSQL database by running init.sql.
Install and update dependencies with pip install -Ur requirements.txt.
Run python -m on9wordchainbot.
- Switch from Markdown to HTML completely
- Fix slow db queries
- Fix slow
/trendgeneration - Rewrite to be more event-driven and principled
- Notify admin group when on maint mode and last game finishes
- Some kind of observability (dashboard?)
- Rate limiting
- Set up webhook?
- Make required letter game more reasonable
- Group leaderboard
pip install -r requirements-dev.txt
Type checking: python -m mypy .
