LOLZTEAM
Создаем бота для Telegram!
Статья носит образовательный характер, мы ни к чему не призываем и не обязываем. Информация представлена исключительно в ознакомительных целях.
Больше интересных статей на нашем форуме: https://lolz.guru/articles/
Подписывайтесь на канал и делитесь ссылкой на статью с друзьями!
Введение
- Создаём необходимые файлы
- Импорт модулей и компонентов
- Первая команда, альтернативная замена БД и обычные кнопки
- Оживляем обычные кнопки
- Вывод статистики (Inline-кнопки, callback_data)
- Рассылка пользователям бота (+ отправка фотографии)
- FSM
- Чему научились?
Создаём папку с названием нашего Бота, в ней три файла: main.py , keyboard.py , config.py. Открываем эти файлы в любом текстовом редакторе ( я использую Sublime, ибо удобно переключаться между файлами + дизайн ).
КАК СДЕЛАТЬ КНОПКУ ► Python Telegram Bot на AIOGram
Импорт модулей и компонентов
Устанавливаем библиотеку с помощью pip в консоли
# -*- coding: utf8 -*- ################################################################################################################################from aiogram import Bot, types from aiogram.utils import executor from aiogram.dispatcher import Dispatcher from aiogram.types import ReplyKeyboardRemove, ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton import asyncio ################################################################################################################################# ###################################################################### from aiogram.dispatcher import FSMContext from aiogram.dispatcher.filters import Command from aiogram.contrib.fsm_storage.memory import MemoryStorage from aiogram.dispatcher.filters.state import StatesGroup, State ###################################################################### ###################### import config ## ИМПОРТИРУЕМ ДАННЫЕ ИЗ ФАЙЛОВ config.py import keyboard ## ИМПОРТИРУЕМ ДАННЫЕ ИЗ ФАЙЛОВ keyboard.py ###################### import logging # ПРОСТО ВЫВОДИТ В КОНСОЛЬ ИНФОРМАЦИЮ, КОГДА БОТ ЗАПУСТИТСЯ
Подключаем токен нашего Бота:
storage = MemoryStorage() # FOR FSM bot = Bot(token=config.botkey, parse_mode=types.ParseMode.HTML) dp = Dispatcher(bot, storage=storage) logging.basicConfig(format=u’%(filename)s [LINE:%(lineno)d] #%(levelname)-8s [%(asctime)s] %(message)s’, level=logging.INFO, )
Попутно с этим заходим в config.py и прописываем наш ключ с BotFather:
botkey = ‘1770592647:AAHrIpW5XW6jYKmB56Kg63r_2LcCK8gOKtg’ # ТОКЕН С BOTFATHER
Первая команда, альтернативная замена БД и обычные кнопки
Перед тем как начать с команды старт, надо добавить кнопки, которые будут появляться при вводе команды. Открываем keyboard.py и пишем такие строки, в начале импортируя библиотеку.
Как сделать меню для Телеграм бота на aiogram Python
from aiogram import Bot, types from aiogram.types import ReplyKeyboardRemove, ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton ###################################################### start = types.ReplyKeyboardMarkup(resize_keyboard=True) # СОЗДАЕМ ВООБЩЕ ОСНОВУ ДЛЯ КНОПОК info = types.KeyboardButton(«Информация») # ДОБАВЛЯЕМ КНОПКУ ИНФОРМАЦИИ stats = types.KeyboardButton(«Статистика») # ДОБАВЛЯЕМ КНОПКУ СТАТИСТИКИ start.add(stats, info) #ДОБАВЛЯЕМ ИХ В БОТА
[AIOGram | Python] Урок 1. Вступление. Простой бот
Привет! Как-то захотел я сделать своего бота в телеграме. Ну, знаете. Есть свой канал, пара чатов, знаю Python. Но скажу честно, первые попытки были заброшены. Оказалось, что в разработке ботов не было единого подхода, а найти хороший фреймворк оказалось сложнее, чем казалось. Или я не особо внимательный. Но в начале 2021 я нашел свой идеал.
Это AIOGram.
А теперь я решил совместить приятное с полезным, так что буду писать какие-то нововведения для бота параллельно документируя их для сайта. Такая себе коллаборация с самим собой для получения побочных продуктов)
AIOGram быстрый старт
Создаём простой проект в PyCharm, ждём завершения и открываем main.py. Его содержимое нас не интересует, так что удаляем. Вместо этого пишем:
from aiogram import Bot , Dispatcher , executor , types
Дабы почувствовать всю прелесть разработки в PyCharm – используем Context Action для импорта фреймрворка. Ставим указатель на aiogram и нажимаем Alt + Enter, и выбираем Install Package.
Если что-то не получилось, то необходимые библиотеки можно установить через Python Packages.
В будущем мы создадим файлик requirements.txt, в котором будут прописаны все необходимые библиотеки для автоматической установки. А токен и другие важные переменные вынесем в .env файл. Но для простоты эти шаги пока опустим.
Далее пишем следующее:
API_TOKEN = ‘BOT TOKEN HERE’
bot = Bot ( token = API_TOKEN )
dp = Dispatcher ( bot )
if __name__ == ‘__main__’ :
executor . start_polling ( dp , skip_updates = True )
Как вы могли заметить, мы создали объект бота, которому передали токен. Теперь сообщения отправленные боту будут приходить нашему боту на aiogram. Dispatcher это своего рода диспетчер, которые будет выполнять множество задач по взаимодействию с ботом. В т.ч. получение сообщений.
А polling не даст завершить работу бота пока приложение активно.
Запустить можно уже, но интереса никакого. Предлагаю добавить эхо функцию.
async def echo ( message : types . Message ) :
await message . answer ( message . text )
Т.е. теперь dispatcher для любого полученного сообщения будет выполнять функцию echo. Если что-то не особо понятно, то полный код будет в конце статьи.
Проверим? Нажимаем Ctrl +Shift + F10 для запуска скрипта.
Расширяем функционал
Кстати, message_handler не только текст принимает. А любые сообщения, плюс мы можем указывать свои фильтры. Вроде сообщений от админа, личные, группа и т.д. Поддерживает он и команды. Например, эта функция будет срабатывать только при вводе команды /start.
Только разместите её выше, чем echo, это важно. В ином случае сообщение перехватит эхо и до этой функции /start не дойдёт.
async def send_welcome ( message : types . Message ) :
await message . reply ( «Hello world!» )
Добавим ещё аналогичную help, но ради интереса пропишем её ниже, чем echo:
async def send_help ( message : types . Message ) :
await message . reply ( «Чем я могу помочь?» )
Как видите, старт так и срабатывает, а вот help нет. Как я и говорил. Обрабатывать мы можем только одну функцию за раз, и если какой-то обработчик соответствует, то дальнейшие будут отброшены.
Именно поэтому, когда мы пишем /start не срабатывает echo. И именно поэтому не сработал help. Потому что echo собирает все сообщения, которые не /start. Переместим help куда-то выше и попробуем снова.
Кстати, можно указать ещё и фильтр на тип сообщения. Стикер, аудио, файл. А можно даже прописывать особые состояния, благодаря которым бот будет ожидать от пользователя конкретных действий. И, конечно же, мы всё это попробуем дальше. А пока вы можете прописать набор каких-то команд и насладиться своим собственным ботом (пока активна IDE, как только выключите, то и бот отвечать перестанет)
На этом пока всё, но это только начало!
Полный код показанного сегодня:
Источник: geekstand.top
Telegram бот на python aiogram — разработка бота с нуля
Посмотрите как клиент отказался от Seo и потом все же вернулся к нам в seouspeh.ru — наглядный сред более 5 лет
А вот и через пару месяцев еще)), класс:
Новый кейс — за 2 последних года (с очень адекватным клиентом):
Источник: saitsozdanie.ru