admin · Травень 21, 2018 в 6:22 pm
Я считаю очень важным в каждом проекте правильно его структурировать – разбивать код проекта на файлы и папки, чтобы было удобнее находить и править нужные куски кода, и в целом навигация по проекту была интуитивно понятной.
Не видел нигде стандартов как правильно структурировать проект бота, по этому дальше – мое субъективное мнение как должен выглядеть фолдер с проектом и если вы имеете замечания или идеи – отпишите мне, обсудим.
Вот к примеру структура проекта нашего викибота.
Сейчас мы в команде переходим на парадигму ООП, и там другие структуры проектов, но для начинающих в любом случае лучше работать с функциональным программированием и структура проекта адаптирована именно под него.
В любом проекте константы, настройки и сущности, которые используються в совершенно разных кусках кода стоит выностить в отдельные файлы.
В любом проекте должны быть файлы:
(Расширим бота созданного в первой части)
Создаем папку mybot/
и в ней файлы:
config.py
1 |
TOKEN = '110355:ABD_GbIeVAUwk11O12vq4UeMUGHG12I' |
Константы принято писать БОЛЬШИМИ_БУКВАМИ, вконце файла всегда принято оставлять пустую строчку
messages.py
1 |
HELLO_MESSAGE = 'Добро пожаловать в нашего бота!' |
Сообщения в отдельном файле, чтобы их было удобно менять
bot.py
1 2 3 4 5 |
import telebot import config # подключаем конфиг, чтобы взять с него токен бота bot = telebot.TeleBot(config.TOKEN) print(bot.get_me()) |
Теперь при запуске, если все впорядке будем видеть параметры бота, благодаря строчке print(bot.get_me())
bot_handlers.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
from bot import bot # Импортируем объект бота from messages import * # Инмпортируем все с файла сообщений @bot.message_handler(commands=['start']) # Выполняется, когда пользователь нажимает на start def send_welcome(message): bot.send_message(message.chat.id, HELLO_MESSAGE) @bot.message_handler(content_types=["text"]) # Любой текст def repeat_all_messages(message): bot.send_message(message.chat.id, message.text) if __name__ == '__main__': bot.polling(none_stop=True) |
Обратите внимание – мы добавили важную составляющую любого бота – хэндлер команды “/start” – когда человек впервые заходит в бота. Между функциями принято ставить 2 enter.
Зпаускаем файл bot_handlers.py
так же, как и bot.py
в прошлом уроке. Если все впорядке видим:
Пишем боту. Должно получится так:
Поздравляю, если все получилось.
Файл requirements.txt
используется для того, чтобы было проще переносить проект и устанавливать библиотеки через pip. Поскольку мы используем pyTelegramBotApi, добавим его в этот файл.
1 |
pyTelegramBotApi |
Каждый новый пакет пишется через enter
Чтобы установить все пакеты из файла вводим
1 |
sudo pip3 install -r requirements.txt |
На всякий случай вот код урока на github.
Спасибо за внимание.
<- Первая часть | Третья часть ->
Good article. I will be going through many of these issues as well..