Telegram-DMI-Bot is the platform that powers @DMI_bot, a Telegram bot aided at helping students find informations about professors, classes' schedules, administration's office hours and more.
The bot is live on Telegram with the username @DMI_Bot.
Send /start
to start it, /help
to see a list of commands.
Please note that the commands and their answers are in Italian.
If you want to test the bot by creating your personal instance, follow this steps:
data/DMI_DB.db.dist
in the same directory and rename it to DMI_DB.db
to enable the database sqliteconfig/settings.yaml.dist
in the same directory and rename it to settings.yaml
python3 setup.py <token>
or edit settings.yaml
manuallypython3 main.py
(If you don't have a token, message Telegram's @BotFather to create a bot and get a token for it)
To install all the requirements you can run:
pip3 install -r requirements.txt
version: "2"
services:
dmibot:
image: ghcr.io/unict-dmi/telegram-dmi-bot:master
container_name: dmibot
volumes:
- </path/to/settings.yaml>:/dmibot/config/settings.yaml
- </path/to/DMI_DB.db>:/dmibot/data/DMI_DB.db
- </path/to/drive_credentials.json>:/dmibot/config/drive_credentials.json
docker run -v </path/to/settings.yaml>:/dmibot/config/settings.yaml -v </path/to/DMI_DB.db>:/dmibot/data/DMI_DB.db -v </path/to/drive_credentials.json>:/dmibot/config/drive_credentials.json -t ghcr.io/unict-dmi/telegram-dmi-bot:master
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate \
Parameter | Function |
---|---|
-v /dmibot/config/settings.yaml |
configurations file |
-v /dmibot/data/DMI_DB.db |
database |
-v /dmibot/config/drive_credentials.json |
drive credentials |
git clone https://github.com/UNICT-DMI/Telegram-DMI-Bot.git
cd Telegram-DMI-Bot
docker build --no-cache -t dmibot .
Notes: only some users are allowed to use these commands indeed there is an if condition that check the chatid of the user that can use them
You can enable these commands setting disable_db = 0 and copy data/DMI_DB.db.dist into data/DMI_DB.db
This command shows the statistics of the times where the commands are used in the last 30 days.
You can enable these commands setting disable_drive = 0 and configuring the GoogleDrive credentials.
/drive: command to get the GoogleDrive files
To install all the test requirements you can run:
pip3 install -r requirements_dev.txt
Start unit tests:
pytest tests/unit/
If you want to check also the code coverage report through an HTML format use:
pytest --cov . tests/unit/ --cov-report=html
To run the end-to-end tests read the following steps below.
Steps:
test:
api_hash: hash of the telegram app used for testing
api_id: id of the telegram app used for testing
session: session of the telegram app used for testing (see steps below)
tag: tag of the bot used for testing
token: token for the bot used for testing
representatives_group: representatives' group id used for testing
dev_group_chatid: dev's group id used for testing
python3 conftest.py .
conftest.py
you just used, you won't need it againtag
value with the username of the test bot you will use.representatives_group
value with the user_id
or group_id
where you want receive reports from /report command.dev_group_chatid
value with the user_id
or group_id
where you want receive tracebacks.Check here if you want to have more information on the steps above
Start end-to-end tests:
pytest tests/e2e/
Check the gh-pages branch
This open-source software is published under the GNU General Public License (GNU GPL) version 3. Please refer to the "LICENSE" file of this project for the full text.
You can find the list of contributors here If you want to contribute, make sure to read the guidelines