Skip to content
Project Hanako is module bot for Telegram and you personal helper.
Python
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
core
modules
.gitignore
README.md
Readme_eng.md
TODO
main.py
requirments.txt

README.md

ProjectHanako - модульный бот для Telegram и твой персональный помощник.

Readme on English

В данном проекте присутствует модульная система, которая позволяет писать модули под различные нужды.
Также в боте уже присутствует под десяток модулей, которые выполняют разные задачи: от TODO менеджера, до модуля управления MPD сервером.

Установка и запуск

1. Склонируйте репозиторий или скачайте и распакуйте архив:
git clone https://github.com/asylumone/ProjectHanako.git
  1. Установите зависимости:
pip3 install -r requirments.txt
  1. В core/config.py измените настройки под ваши нужды. По стандарту - это токен бота и id пользователя.
tg_token = "Сюда токен"
users = [сюда id пользователей, которые имеют доступ к боту]

Чтобы узнать ID, можно написать боту, посмотреть в логах и скопировать нужный нам ID.

PyTelegramBotApi

Бот использует pyTelegramBotAPI для упрощенного создания модулей.
Возможно, когда-то мы и напишем собственную библиотеку, но сейчас это лучший вариант. Наверное.

Создание модулей

При запуске бота выполняется метод HanakoModule.load_modules() который листит по каталогу modules, и если был обнаружен модуль - пытается загрузить его.

Индикатор того, что каталог является модулем есть файл __init__.py.

После этого, он пытается загрузить main.py файл, в котором содержаться такие переменные как name, author, description, version, command. Эти переменные являются обязательными.

pkgname же берется с названия каталога модуля, а handle с функции handle(message, bot) в main.py модуля.

Если посмотреть на код в методе Core.handler, то можно легко понять, что при обнаружении команды, которая начинается с command, переменные message и bot отправляются в функцию handle модуля, с которым связан command.

Структура модуля на примере echo:
ProjectHanako/modules$ tree echo/

echo/
├── __init__.py
└── main.py
__init__.py - показывает что данный каталог является модулем
main.py - главный файл модуля
Можно добавлять также другие файлы. Посмотрите другие модули, чтобы понять, как это делать.
Код main.py на примере echo:
author = "kiriharu" #  Автор
name = "Echo bot" #  Имя
description = '''Simple echo bot. Returns the message that was sent by user''' #  Описание
version = '0.1' #  Версия
command = '/echo' #  Команда, на которую триггерится бот.


def handle(message, bot): #  Главная функция. 
    bot.reply_to(message, message.text) #  Отвечаем на сообщение message текстом message.text
    # Этот модуль просто вернет сообщение, которое было написано.
    # Если мы напишем /echo test то оно и вернет /echo test. Всё просто!
You can’t perform that action at this time.