59 lines
3.3 KiB
Markdown
59 lines
3.3 KiB
Markdown
# Modular Bot Framework for Telegram (MBFT)
|
|
Modular bot framework for telegram (MBFT for short) allows you to quickly create stable, modular and highly customizable bots.
|
|
The concept comes from the original project created for Twitch chat that has shown its high stability (it has worked for over 10 months without a single crash).
|
|
Now it is being rewritten for Telegram to serve many different purposes.
|
|
|
|
## Installing and running the bot
|
|
|
|
The installation can be easily done by cloning this repository and providing the Telegram bot token using the config/token file.
|
|
In commands, it is done like this:
|
|
```bash
|
|
# cloning the repo
|
|
git clone http://109.86.70.81:3000/dymik739/modular-bot-framework-for-telegram
|
|
cd modular-bot-framework-for-telegram/
|
|
|
|
# creating "config" folder and providing a token
|
|
mkdir config/
|
|
printf "YOUR_AUTH_TOKEN" > config/token
|
|
|
|
# running the bot
|
|
python3 main.py
|
|
# or, using the screen utility:
|
|
screen -S mbft python3 main.py
|
|
```
|
|
|
|
## Writing modules (for modVM v1)
|
|
|
|
To start making your module, you need to create a folder in the modules/ directory and give it a unique name (just like with any other folder).
|
|
After that, you need to create two files: for code and for metadata.
|
|
|
|
Firstly, you want to make a file called "meta.json" - it will let the module loader know where you placed your code as well as some other useful metadata. Let's look at a sample meta.json file:
|
|
```
|
|
{
|
|
"index_file": index.py, # locates your source code; index.py by default
|
|
"start_on_boot": true, # tells mod loader to start your module automatically; false by default
|
|
"version": 1, # this points to the specific version of modVM your code needs to run; 1 by default
|
|
"alias": "testapp" # adds an alias to your module which can be later specified in control commands
|
|
"predefine": "predefine.py" # locates your predefine code (it is being run only once on module load
|
|
}
|
|
```
|
|
|
|
After that you can start writing your code in the index.py file; every code is different, but there are some generic rules to understand and follow:
|
|
- your code receives message that can be accessed at self.MESSAGE
|
|
- message text can be found at self.MESSAGE.text
|
|
- to send a responce, you need to write a string with responce text to self.RESPONCE
|
|
- you can use modules already available to you (json, codecs); please, try to avoid importing unneccesary modules
|
|
- if you need to access files amd folders in your module dicertory, you can easily do so by using self.path + "filename"; self.path always contains your current folder name
|
|
- please, avoid using time.sleep() in any scenario; modules are syncronous, so usage of this method will stall the entire bot
|
|
- in order to define persistent variables you can set them in your predefine file
|
|
|
|
If you want to submit your code, please check if it works by testing the output (see "testing" section below); if you want to submit the code for someone to do more work on it, you should set "start_on_boot" to "false" in meta.json file (the same should be done for testing/unstable modules)
|
|
|
|
## Testing modules locally
|
|
In order to test the modules/bot offline you can run the module-testing.py file - it behaves just like the bot, but allows you to enter any message, doesn't require Internet connection and bot token. This is a good way to test your modules before publishing them.
|
|
|
|
It can be used like this:
|
|
```
|
|
python3 module-testing.py
|
|
```
|