В материале дается инструкция по созданию телеграм-бота для самостоятельной подготовки учащихся к интеллектуальным испытаниям. Познакомиться с тем, как будет работать такой бот, можно по ссылке ниже.
Наталья ДАШКО, учитель английского языка
Григорий ДАШКО, учитель английского языка и информатики
ГУО «Средняя школа № 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.