В материале дается инструкция по созданию телеграм-бота для самостоятельной подготовки учащихся к интеллектуальным испытаниям. Познакомиться с тем, как будет работать такой бот, можно по ссылке ниже.
Наталья ДАШКО, учитель английского языка
Григорий ДАШКО, учитель английского языка и информатики
ГУО «Средняя школа № 2 г. Орши имени Б.Л.Хигрина»,
Витебская область
В материале дается инструкция по созданию телеграм-бота. Познакомиться с тем, как будет работать такой бот, можно ЗДЕСЬ.
Этапы создания телеграм-бота:
1) регистрация;
2) настройка окружения;
3) создание основных функций;
4) развертывание.
Рассмотрим подробнее каждый из этапов:
Регистрация
1. Ищите BotFather в Telegram и начните диалог с командой /start.
2. Отправьте команду /newbot.
3. BotFather запросит имя для вашего бота. Это имя, которое пользователи будут видеть.
4. Затем он запросит уникальное имя пользователя для бота (заканчивающееся на «bot», например, my_test_bot).
5. После успешного создания, BotFather пришлет вам токен. Этот токен нужен для аутентификации и взаимодействия с ботом через API. Он впоследствии вставляется в код приложения.
Этапы «Настройка окружения» и «Создание основных функций» предполагают программирование с использованием языка python и библиотеки python-telegram-bot.
Мы предлагаем вашему вниманию шаблон main_.py, который вы сможете адаптировать под свои нужды:
«
import logging
from telegram import ForceReply, Update
from telegram.ext import Application, CommandHandler, ContextTypes, MessageHandler, filters
logging.basicConfig(
format=»%(asctime)s — %(name)s — %(levelname)s — %(message)s», level=logging.INFO
)
logging.getLogger(«httpx»).setLevel(logging.WARNING)
logger = logging.getLogger(__name__)
# В этом блоке даются слова и статьи их описывающие.
articles = {
«слово1»: «определение1»,
«слово2»: «определение2»
}
# Блок приветствия новому пользователю бота
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
«»»Send a message when the command /start is issued.»»»
user = update.effective_user
await update.message.reply_html(
rf»Здравствуйте {user.mention_html()}! Какое слово Вас интересует?»,
reply_markup=ForceReply(selective=True),
)
async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
«»»Send a message when the command /help is issued.»»»
await update.message.reply_text(«Help!»)
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
«»»Echo the user message.»»»
await update.message.reply_text(update.message.text)
# Блок реакции, если запрашиваемого слова нет в нашем списке
async def article_handler(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
«»»Send a predefined article based on user input.»»»
user_input = update.message.text.lower()
article = articles.get(user_input, «Информация по этому слову отсутствует.»)
await update.message.reply_text(article, disable_web_page_preview=True)
# Блок токена
def main() -> None:
«»»Start the bot.»»»
application = Application.builder().token(«Идентификатор_Бота»).build()
application.add_handler(CommandHandler(«start», start))
application.add_handler(CommandHandler(«help», help_command))
application.add_handler(MessageHandler(filters.TEXT &
~filters.COMMAND, article_handler))
application.add_handler(MessageHandler(filters.TEXT &
~filters.COMMAND, echo))
application.run_polling(allowed_updates=Update.ALL_TYPES)
if __name__ == «__main__»:
main()
«
Развертывание бота предполагает размещение его в сети интернет у хостера c поддержкой python. Как правило, телеграм-боты принято размещать на vps-хостинге. Однако возможно его размещение и полноценное функционирование и в рамках shared-hosting, что кратно дешевле варианта vps. В таком случае не обойтись без активной помощи техподдержки провайдера. В нашем случае проект помогли реализовать специалисты west-hoster.by.