DnDCompanionBot
is a telegram bot to play Dungeons and Dragons. In the future, this bot should be able to track
campaigns, character sheets and help the DM with management tasks.
General commands | Action |
---|---|
/start | starts the DnDCompanionBot |
/roll <expression> | rolls the dice using the dice notation |
/charsheet <username> | returns the character sheet associated with username |
/help | shows this help message |
Campaign commands | Action |
---|---|
/start_campaign | starts a new campaign in the invoked group |
/close_campaign | closes an active campaign |
/set_turns <username1>, ..., <usernameN> | creates a list with the order of players for a given round |
/turn | shows the current player in the turns list |
/next_turn | moves to the next player in the turns list |
/set_dm <username> | sets the username of the DM for the current campaign |
/dm | shows the DM for the current campaign |
Character commands | Action |
---|---|
/import_char <url> | imports the JSON data of a character from a URL |
/link_char <char_id>, (username) | links character to target username or self username |
/status <username|character> | shows the list of weapons of a character |
/weapons <username|character> | shows the list of weapons of a character |
/attack_roll <weapon>, <melee|range>, (distance), (adv|disadv) | performs an attack roll on a character |
/initiative_roll <character> | performs an initiative roll for a character |
/short_rest_roll <username|character> | performs an short rest roll for a character |
/ability_check <ability>, (skill) | performs an ability check or a skill check if skill is specified |
/say <character>, <message> | prints a message using in-game conversation format |
/whisper <character>, <message> | prints a whisper message using in-game conversation format |
/yell <character>, <message> | prints a yell message using in-game conversation format |
- A AWS key configured locally, see here.
- NodeJS >= v8.9.0.
- A Telegram account.
# Install the Serverless Framework
$ npm install serverless -g
# Install the necessary plugins
$ npm install
# Get a bot from Telegram, sending this message to @BotFather
$ /newbot
# Put the token received into a file called serverless.env.yml, along with your Firebase configuration details. Like this:
# file: serverless.env.yml
TELEGRAM_TOKEN: <your_token>
FIREBASE_DB_URL: <your_firebase_realtime_database_url>
FIREBASE_API_SECRET: <your_firebase_realtime_database_secret>
# Deploy it!
$ serverless deploy
# With the URL returned in the output, configure the Webhook
$ curl -X POST https://<your_url>.amazonaws.com/dev/set_webhook
Define the following ENV variables for your OS:
TELEGRAM_TOKEN: <your_telegram_bot_token>
FIREBASE_DB_URL: <your_firebase_realtime_database_url>
FIREBASE_API_SECRET: <your_firebase_realtime_database_secret>
Then, make sure you use pip and all tools for Python 3 and install all dependencies:
$ pip3 install virtualenv
$ virtualenv venv
$ source venv/bin/activate
$ pip3 install -r requirements.txt
Follow the instructions from the section Installing locally, and then run the bot:
$ python local.py
Follow the instructions from the section Installing locally, and then run the tests:
$ nose2 -v
AWS credentials saved on your machine at ~/.aws/credentials.