dispatcher aiogram что это

Кнопки в aiogram?

@dp.message_handler(commands=»start»)
async def intro_function(message: types.Message):
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
buttons = [«Регистрация»,»Проверить базу на дубли»,»Показать базу»,»FAQ»,»Обратная связь»]
keyboard.add(*buttons)
await message.answer(«Добро пожаловать! Выберите действие: «, reply_markup=keyboard)

@dp.message_handler(lambda message: message.text == «Обратная связь»)
async def registration(message: types.Message):

Это меню никуда не денется после отправки сообщения, будет доступно по этой кнопке:

Вот только с таким кодом сообщение увидит только сам юзер, бот его не поймает и проигнорирует.

import logging
from aiogram import Bot, Dispatcher, executor, types
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters import Text
import aiogram.utils.markdown as md
from aiogram.types import ParseMode
from aiogram.contrib.fsm_storage.memory import MemoryStorage

bot = Bot(token=’ЧЧЧ’)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)
logging.basicConfig(level=logging.INFO)

class Form(StatesGroup):
feedback = State()

@dp.message_handler(commands=»start»)
async def intro_function(message: types.Message):
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
buttons = [«Регистрация»,»Проверить базу на дубли»,»Показать базу»,»FAQ»,»Обратная связь»]
keyboard.add(*buttons)
await message.answer(«Добро пожаловать! Выберите действие: «, reply_markup=keyboard)

@dp.message_handler(lambda message: message.text == «Обратная связь»)
async def registration(message: types.Message):
rmv_keyboard = types.ReplyKeyboardRemove()
admin_id = 379667659
await Form.feedback.set()
await message.answer(«Напишите ниже свой отзыв.», reply_markup=rmv_keyboard)

@dp.message_handler(state=’*’, commands=’cancel’)
@dp.message_handler(Text(equals=’cancel’, ignore_case=True), state=’*’)
async def cancel_handler(message: types.Message, state: FSMContext):
current_state = await state.get_state()
if current_state is None:
return

logging.info(‘Cancelling state %r’, current_state)
await state.finish()
await message.reply(‘Cancelled.’, reply_markup=types.ReplyKeyboardRemove())

@dp.message_handler(state=Form.feedback)
async def process_feedback(message: types.Message, state:FSMContext):
admin_id = ХХХХХХХ
async with state.proxy() as data:
data[‘feedback’] = message.text
await message.answer(«Отзыв от пользователя:»)
await bot.send_message(admin_id, data[‘feedback’])

Вот код. ПОсле отправки отзыва чтобы кнопка назад вернула на главное меню

Источник

Как решить проблему, не запускается бот python с библиотекой aiogram?

Создал для теста простого бота

Но при запуске выдает ошибку

WARNING:aiogram:Goodbye!
Traceback (most recent call last):
File «C:/Users/zahar/Downloads/bot/bot.py», line 21, in
executor.start_polling(dp, skip_updates=True)
File «C:\Users\zahar\Downloads\bot\venv\lib\site-packages\aiogram\utils\executor.py», line 41, in start_polling
executor.start_polling(reset_webhook=reset_webhook, timeout=timeout, relax=relax, fast=fast)
File «C:\Users\zahar\Downloads\bot\venv\lib\site-packages\aiogram\utils\executor.py», line 305, in start_polling
loop.run_until_complete(self._startup_polling())
File «C:\Users\zahar\AppData\Local\Programs\Python\Python38-32\lib\asyncio\base_events.py», line 616, in run_until_complete
return future.result()
File «C:\Users\zahar\Downloads\bot\venv\lib\site-packages\aiogram\utils\executor.py», line 356, in _startup_polling
await self._welcome()
File «C:\Users\zahar\Downloads\bot\venv\lib\site-packages\aiogram\utils\executor.py», line 346, in _welcome
user = await self.dispatcher.bot.me
File «C:\Users\zahar\Downloads\bot\venv\lib\site-packages\aiogram\bot\bot.py», line 27, in me
setattr(self, ‘_me’, await self.get_me())
File «C:\Users\zahar\Downloads\bot\venv\lib\site-packages\aiogram\bot\bot.py», line 176, in get_me
result = await self.request(api.Methods.GET_ME, payload)
File «C:\Users\zahar\Downloads\bot\venv\lib\site-packages\aiogram\bot\base.py», line 201, in request
return await api.make_request(self.session, self.__token, method, data, files,
File «C:\Users\zahar\Downloads\bot\venv\lib\site-packages\aiogram\bot\api.py», line 104, in make_request
return check_result(method, response.content_type, response.status, await response.text())
File «C:\Users\zahar\Downloads\bot\venv\lib\site-packages\aiogram\bot\api.py», line 84, in check_result
exceptions.Unauthorized.detect(description)
File «C:\Users\zahar\Downloads\bot\venv\lib\site-packages\aiogram\utils\exceptions.py», line 137, in detect
raise cls(description)
aiogram.utils.exceptions.Unauthorized: Unauthorized

Уже все что смог в интернете перечитал, не могу понять в чем проблема.
Несколько раз устанавливал библиотеку, все что только смог обновил.

Источник

Конечные автоматы (FSM)¶

Теория¶

В этой главе мы поговорим о, пожалуй, самой важной возможности ботов: о системе диалогов. К сожалению, далеко не все действия в боте можно выполнить за одно сообщение или команду. Предположим, есть бот для знакомств, где при регистрации нужно указать имя, возраст и отправить фотографию с лицом. Можно, конечно, попросить пользователя отправить фотографию, а в подписи к ней указать все данные, но это неудобно для обработки и запроса повторного ввода.
Теперь представим пошаговый ввод данных, где в начале бот «включает» режим ожидания определённой информации от конкретного юзера, далее на каждом этапе проверяет вводимые данные, а по команде /cancel прекращает ожидать очередной шаг и возвращается в основной режим. Взгляните на схему ниже:

Зелёной стрелкой обозначен процесс перехода по шагам без ошибок, синие стрелки означают сохранение текущего состояния и ожидание повторного ввода (например, если юзер указал, что ему 250 лет, следует запросить возраст заново), а красные показывают выход из всего процесса из-за команды /cancel или любой другой, означающей отмену.

Читайте также:  microsoft lync что это

Процесс со схемы выше в теории алгоритмов называется конечным автоматом (или FSM — Finite State Machine). Подробнее об этом можно прочесть здесь.

Практика¶

В качестве примера мы напишем имитатор заказа еды и напитков в кафе, а заодно научимся хранить логически разные хэндлеры в разных файлах.

Примечание об исходных текстах к главе

В тексте будет рассмотрен не весь код бота, некоторые импорты и обработчики специально пропущены для улучшения читабельности. Полный набор исходников можно найти на GitLab или в зеркале на GitHub.

За основу структуры файлов и каталогов взят репозиторий tgbot_template от пользователя Tishka17. В этой главе будет рассмотрен сильно упрощённый вариант его примера, а далее по мере усложнения бота структура файлов будет расширяться.
Спасибо!

Структура файлов и каталогов¶

О модулях, пакетах и каталогах

Создание шагов¶

Рассмотрим описание шагов для «заказа» еды. Для начала в файле app/handlers/food.py импортируем необходимые объекты и приведём списки блюд и их размеров (в реальной жизни эта информация может динамически подгружаться из какой-либо БД):

Напишем обработчик первого шага, реагирующий на команду /food (регистрировать его будем позднее):

Осталось реализовать последнюю функцию, которая отвечает за получение размера порции (с аналогичной проверкой ввода) и вывод результатов пользователю:

Шаги для выбора напитков делаются совершенно аналогично. Попробуйте сделать самостоятельно или загляните в исходные тексты к этой главе.

Общие команды¶

Раз уж заговорили о сбросе состояний, давайте в файле app/handlers/common.py реализуем обработчики команды /start и действия «отмены». Первая должна показывать некий приветственный/справочный текст, а вторая просто пишет «действие отменено». Обе функции сбрасывают состояние и данные и убирают обычную клавиатуру, если вдруг она есть:

Зарегистрируем эти два обработчика:

Точка входа¶

Теперь, вооружившись знаниями о конечных автоматах, вы можете безбоязненно писать ботов с системой диалогов.

Источник

Dispatcher¶

Basics¶

Available handlers¶

Handler class¶

Features¶

Dispatcher class¶

Simple Updates dispatcher

It will process incoming updates: messages, edited messages, channel posts, edited channel posts, inline queries, chosen inline results, callback queries, shipping queries, pre-checkout queries.

You can skip old incoming updates from queue. This method is not recommended to use if you use payments or you bot has high-load.

Process list of updates

updates

fast

Process single update object

update

async reset_webhook ( check = True ) → bool [source] ¶

check – check before deleting

timeout

relax

limit

reset_webhook

fast

error_sleep

allowed_updates

Break long-polling process.

Wait for the long-polling to close

Check if polling is enabled

Register handler for message

callback

commands – list of commands

regexp – REGEXP

content_types – List of content types.

custom_filters – list of custom filters

kwargs

state

Decorator for message handler

Simple commands handler:

Filter messages by regular expression:

Filter messages by command regular expression:

Filter by content type:

Filter by custom function:

Use multiple filters:

Register multiple filters set for one handler:

This handler will be called if the message starts with ‘/command’ OR is some emoji

By default content_type is ContentType.TEXT

commands – list of commands

regexp – REGEXP

Читайте также:  при какой температуре краснеет металл при нагревании 2мм

content_types – List of content types.

custom_filters – list of custom filters

kwargs

state

run_task – run callback in task (no wait results)

Register handler for edited message

callback

commands – list of commands

regexp – REGEXP

content_types – List of content types.

state

custom_filters – list of custom filters

run_task – run callback in task (no wait results)

kwargs

Decorator for edited message handler

You can use combination of different handlers

commands – list of commands

regexp – REGEXP

content_types – List of content types.

state

custom_filters – list of custom filters

run_task – run callback in task (no wait results)

kwargs

Register handler for channel post

callback

commands – list of commands

regexp – REGEXP

content_types – List of content types.

state

custom_filters – list of custom filters

run_task – run callback in task (no wait results)

kwargs

Decorator for channel post handler

commands – list of commands

regexp – REGEXP

content_types – List of content types.

state

custom_filters – list of custom filters

run_task – run callback in task (no wait results)

kwargs

Register handler for edited channel post

callback

commands – list of commands

regexp – REGEXP

content_types – List of content types.

state

custom_filters – list of custom filters

run_task – run callback in task (no wait results)

kwargs

Decorator for edited channel post handler

commands – list of commands

regexp – REGEXP

content_types – List of content types.

custom_filters – list of custom filters

state

run_task – run callback in task (no wait results)

kwargs

Register handler for inline query

callback

custom_filters – list of custom filters

state

run_task – run callback in task (no wait results)

kwargs

Decorator for inline query handler

state

custom_filters – list of custom filters

run_task – run callback in task (no wait results)

kwargs

Register handler for chosen inline query

callback

state

custom_filters

run_task – run callback in task (no wait results)

kwargs

Decorator for chosen inline query handler

state

custom_filters

run_task – run callback in task (no wait results)

kwargs

Register handler for callback query

callback

state

custom_filters

run_task – run callback in task (no wait results)

kwargs

Decorator for callback query handler

state

custom_filters

run_task – run callback in task (no wait results)

kwargs

Register handler for shipping query

callback

state

custom_filters

run_task – run callback in task (no wait results)

kwargs

Decorator for shipping query handler

state

custom_filters

run_task – run callback in task (no wait results)

kwargs

Register handler for pre-checkout query

callback

state

custom_filters

run_task – run callback in task (no wait results)

kwargs

Decorator for pre-checkout query handler

state

custom_filters

run_task – run callback in task (no wait results)

kwargs

Register handler for poll

callback

custom_filters

run_task – run callback in task (no wait results)

Читайте также:  какой первоначальный взнос на ипотеку в москве

kwargs

Decorator for poll handler

custom_filters

run_task – run callback in task (no wait results)

kwargs

Register handler for poll_answer

callback

custom_filters

run_task – run callback in task (no wait results)

kwargs

Decorator for poll_answer handler

custom_filters

run_task – run callback in task (no wait results)

kwargs

Register handler for my_chat_member

callback

custom_filters

run_task – run callback in task (no wait results)

kwargs

Decorator for my_chat_member handler

custom_filters

run_task – run callback in task (no wait results)

kwargs

Register handler for chat_member

callback

custom_filters

run_task – run callback in task (no wait results)

kwargs

Decorator for chat_member handler

custom_filters

run_task – run callback in task (no wait results)

kwargs

Register handler for chat_join_request

callback

custom_filters

run_task – run callback in task (no wait results)

kwargs

Decorator for chat_join_request handler

custom_filters

run_task – run callback in task (no wait results)

kwargs

Register handler for errors

callback

exception – you can make handler for specific errors type

run_task – run callback in task (no wait results)

Decorator for errors handler

exception – you can make handler for specific errors type

run_task – run callback in task (no wait results)

Get current state for user in chat as context

chat

user

Execute throttling manager. Returns True if limit has not exceeded otherwise raises ThrottleError or returns False

key – key in storage

rate – limit (by default is equal to default rate limit)

user_id – user id

chat_id – chat id

no_error – return boolean value instead of raising error

Get information about key in bucket

chat_id

user_id

Release blocked key

chat_id

user_id

Execute handler as task and return None. Use this decorator for slow handlers (with timeouts)

func

Meta-decorator for throttling. Invokes on_throttled if the handler was throttled.

on_throttled – the callable object that should be either a function or return a coroutine

key – key in storage

rate – limit (by default is equal to default rate limit)

user_id – user id

chat_id – chat id

callback – callable or subclass of AbstractFilter

validator – custom validator.

event_handlers – list of instances of Handler

exclude_event_handlers – list of excluded event handlers ( Handler )

callback – callable of subclass of AbstractFilter

middleware

Источник

Dispatcher aiogram что это

aiogram is a pretty simple and fully asynchronous framework for Telegram Bot API written in Python 3.7 with asyncio and aiohttp. It helps you to make your bots faster and simpler.

Few steps before getting started.

Poll BotAPI for updates and process updates

You can find more examples in examples/ directory

Official aiogram resources:

This project exists thanks to all the people who contribute. [Code of conduct].

Become a financial contributor and help us sustain our community. [Contribute]

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

About

Is a pretty simple and fully asynchronous framework for Telegram Bot API written in Python 3.7 with asyncio and aiohttp.

Источник

Сказочный портал