Создание простого бота
Регистрация аккаунта
Для того, чтобы создавать ботов - мы будем пользоваться библиотекой mxbt. Установить её можно, вписав в терминал следующую команду:
pip install mxbt
python -m pip install mxbt
Для создания аккаунта бота, необходимо просто создать любой пользовательский аккаунт, после чего использовать данные для входа в нашем коде.
bot.py
Переходим к Python. Для создания бота можно использовать любой понравившийся вам редактор. Создадим файл bot.py в котором будет храниться основная логика программы:
Импорт основных объектов
Для начала импортируем классы Bot, Context и Creds.
Bot- основной класс нашего бота, из которого наша программа будет подключаться к серверам Matrix.Context- класс, хранящий в себе основную информацию о использованной команде.Creds- класс, хранящий в себе данные для входа в учетную запись.
from mxbt import Bot, Context, Creds
Тело бота
Создаем экземпляр класса Bot. В него отправляем данные для входа, а также префикс бота.
Note
Префикс - подстрока, которая должна быть в начале каждой команды, чтобы она сработала.
bot = Bot(
prefix='!',
creds=Creds.from_json_file('credits.json')
)
Как видно, данные для входа мы подгружаем из отдельного файла - credits.json, вот его структура:
{
"homeserver" : "https://matrix.org",
"user_id" : "myusername",
"password" : "mypassword"
}
bot = Bot(
prefix='!',
creds=Creds(
homeserver="https://matrix.org",
username="mybot",
password="mypassword"
)
)
Команда help
Warning
Все функции команд являются ассинхронными, как и большая часть функций в проектах на библиотеке mxbt. Имейте это ввиду.
При помощи бота создаем декоратор on_command, принимающий команду help, после чего создаем функцию, которая будет реагировать на эту команду. Для начала сделаем так, чтобы в ответ на эту команду, бот отправлял нам сообщение Привет!, используя метод reply у контекста.
ctx.reply- Пересылает отправленное сообщение и отвечает на него каким-либо текстом/файлом.aliases- Список доступных имен для команды.
@bot.on_command(aliases=['help'])
async def help(ctx: Context):
await ctx.reply("Привет!")
Запуск бота
Чтобы запустить бота, необходимо лишь воспользоваться встроенным у него методом run.
bot.run()
Теперь при запуске файла бот начнет свою работу и будет отвечать на команду !help.
Warning
При первом запуске придется подождать пару минут, поскольку происходит синхронизация со всеми комнатами, в которых состоит бот.
Итог
Таким образом мы реализовали простого бота, выполняющего созданные нами команды.
Полный код бота
from mxbt import Bot, Context, Creds
bot = Bot(
prefix="!", # Standart command prefix, commands can setup it own prefix
creds=Creds(
homeserver="https://matrix.org",
username="mybot",
password="mypassword"
)
)
@bot.on_command(prefix="?", aliases=["echo", "e"]) # Every command can setup it own prefix, it is optionaly
async def ctx_echo(ctx: Context) -> None: # Context object contains main info about event
await ctx.reply(ctx.body) # Reply message to event room
bot.run() # Run bot event loop