def setup(dp: Dispatcher): """ Setup handlers """ dp.register_message_handler(start, commands=["start"])
import asyncio from aiogram import Bot, Dispatcher, executor from config import BOT_TOKEN, OWM_TOKEN from pyowm import OWM # OpenWeatherMap.org API from pyowm.utils.config import get_default_config loop = asyncio.get_event_loop() bot = Bot(BOT_TOKEN, parse_mode='HTML') dp = Dispatcher(bot, loop=loop) config_dict = get_default_config() config_dict['language'] = 'ru' owm = OWM(OWM_TOKEN, config_dict) # initialize the Weather API if __name__ == "__main__": from handlers import dp, send_to_admin executor.start_polling(dp, on_startup=send_to_admin)
# run: python -m "infobot.run" from aiogram import Bot from aiogram import Dispatcher from aiogram import executor from aiogram import types from .command import CommamdHandler from .common import env_var_line from .storage import RateStorage bot = Bot(token=env_var_line("BOT_TOKEN")) dp = Dispatcher(bot) storage = RateStorage() cmd_handler = CommamdHandler(storage) async def setup_loop(dispatcher): """Setup actual loop from dispatcher into storage. """ storage.actual_loop = dispatcher.loop @dp.message_handler() async def make_answer(message: types.Message): """Single enter point. """ user = f"{message.from_user.full_name}({message.from_user.id})" msg, data = await cmd_handler.execute(user, message.text) if data: await message.reply_photo(data, caption=msg or "Rate history") else:
from aiogram import Bot, Dispatcher from aiogram.contrib.fsm_storage.memory import MemoryStorage from aiogram.dispatcher.filters.state import State, StatesGroup from PIL import Image import os BOT_TOKEN = os.environ.get('BOT_TOKEN') bot = Bot(BOT_TOKEN) memory = MemoryStorage() dispatcher = Dispatcher(bot=bot, storage=memory) class BotStates(StatesGroup): """В этом классе просто хранятся переменные разных состояний. Если вызвать из класса переменную, то будет установленно состояние этой переменной.""" show_main_menu_buttons = State() back_to_menu = State() list_meal = State() feedback_menu = State() get_feedback = State() confirm_number = State() user_confirmation = State() ask_phone = State() ask_location = State() check_inline_btns = State() check_clicked_button = State() def resize_image(img_path): """Функция изменяет размер любой картинки на тот размер который Вы указали #image.resize(width, height)# """
from aiogram import Bot, Dispatcher from aiogram.types import ParseMode from .settings import BotSettings from aiogram.contrib.fsm_storage.memory import MemoryStorage poster_bot = Bot(token=BotSettings.API_TOKEN, parse_mode=ParseMode.HTML) dp = Dispatcher(poster_bot, storage=MemoryStorage())
def register_user(dp: Dispatcher): dp.register_message_handler(user_start, commands=["start"], state="*")
def register_admin(dp: Dispatcher): dp.register_message_handler(admin_start, commands=["start"], state="*", role=UserRole.ADMIN)
import asyncio import aiohttp from aiogram import Bot, Dispatcher, executor from config import BOT_TOKEN, _host, _port, _login_proxy, _password_proxy, _proxy_type from aiogram.contrib.fsm_storage.memory import MemoryStorage # PROXY_AUTH = aiohttp.BasicAuth(login=_login_proxy, password=_password_proxy) loop = asyncio.get_event_loop() # Создание асинхронного потока # Тип парсинга - теги как в html # bot = Bot(token=BOT_TOKEN, parse_mode='HTML', proxy=f'{_proxy_type}://{_host}:{_port}', proxy_auth=PROXY_AUTH) bot = Bot(token=BOT_TOKEN, parse_mode='HTML') dp = Dispatcher(bot=bot, loop=loop, storage=MemoryStorage()) # Доставщик сообщений if __name__ == '__main__': from handlers.handlers import dp, send_to_admin executor.start_polling(dp, on_startup=send_to_admin)
def state_ctx(cls): return Dispatcher.get_current().current_state()
def set_dispatcher_storage(dispatcher: Dispatcher): app = dispatcher["app"] dispatcher.storage = app["redis"]["fsm_storage"]
steps={ State("1"): DataStep(prompt="Введите ваше имя", field="name"), State("2"): DataStep( prompt="Вам уже есть 18 лет?", variants=[("Да", "yes"), ("Нет", "no")], reorder_variants_by=2, field="18+", ), State("3"): DataStep( prompt="Введите ваш рост", error_msg="Ошибка, введите целое число!\n\n", type_factory=int, field="height", ), }) logging.basicConfig(level=logging.INFO) storage = MemoryStorage() bot = Bot(token=API_TOKEN) dp = Dispatcher(bot, storage=storage) dialog.add_done_callback(input_done) dialog.register_handler(dp) dp.register_message_handler(dialog.start) if __name__ == '__main__': executor.start_polling(dp, skip_updates=True)
from aiogram import Dispatcher from aiogram.contrib.middlewares.logging import LoggingMiddleware from telegram_bot.settings import dispatcher_storage from telegram_bot.telegram.bot import bot """ help - 帮助 weather - 获取实时天气(最近两天) weather_6h - 获取实时天气(最近六小时) set_location - 更新位置 subscribe - 开启订阅 unsubscribe - 关闭订阅 set_ding_bot - 新增钉钉机器人同步 delete_ding_bot - 移除钉钉同步 """ dp = Dispatcher(bot, storage=dispatcher_storage) dp.middleware.setup(LoggingMiddleware())
def register_handlers(dp: Dispatcher): dp.register_message_handler( admin.send_message, filters.IDFilter(user_id=BotConfig.ADMINS), commands=["send"], ) dp.register_message_handler( admin.ask_for_feedback, filters.IDFilter(user_id=BotConfig.ADMINS), commands=["feedback"], ) dp.register_message_handler( admin.send_push, filters.IDFilter(user_id=BotConfig.ADMINS), commands=["push"], ) dp.register_message_handler( matcher.randomize, filters.IDFilter(user_id=BotConfig.ADMINS), commands=["roll"], ) dp.register_message_handler(extra.contact, commands=["contact"]) dp.register_message_handler(extra.change_status, commands=["status"]) dp.register_message_handler(extra.change_payment, commands=["payment"]) dp.register_message_handler(registration.cmd_start, commands=["start", "settings"]) dp.register_message_handler(registration.cmd_text_go, state=RegisterSteps.go) dp.register_message_handler(registration.stage_name, state=RegisterSteps.name) dp.register_message_handler(registration.stage_graduate, state=RegisterSteps.is_graduate) dp.register_message_handler(registration.stage_university, state=RegisterSteps.university) dp.register_message_handler(registration.stage_grad_year, state=RegisterSteps.grad_year) dp.register_message_handler(registration.stage_payment, state=RegisterSteps.payment) dp.register_message_handler(registration.stage_active, state=RegisterSteps.active)
async def on_shutdown(dispatcher: Dispatcher): dispatcher.stop_polling() print(u"Tchau!")
from app import config, filters event_loop = asyncio.get_event_loop() proxy_auth = aiohttp.BasicAuth( login=config.PROXY_USERNAME, password=config.PROXY_PASSWORD ) bot = Bot( token=config.BOT_TOKEN, loop=event_loop, proxy=config.PROXY_URL, proxy_auth=proxy_auth, parse_mode=types.ParseMode.HTML, ) dp = Dispatcher(bot, loop=event_loop) def setup(): from app import middlewares from app.utils import executor middlewares.setup(dp) filters.setup(dp) executor.setup() logger.info("Register handlers...") # noinspection PyUnresolvedReferences import app.handlers
from aiogram.contrib.fsm_storage.memory import MemoryStorage from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from sqlalchemy.engine import Engine from sqlalchemy import create_engine from aiogram import Bot, Dispatcher from dynaconf import Dynaconf settings: Dynaconf = Dynaconf( env='development', # change to 'production' if production settings_files=['app/settings.toml', 'app/.secrets.toml'], environments=True) bot: Bot = Bot(settings.TOKEN) storage: MemoryStorage = MemoryStorage() dp: Dispatcher = Dispatcher(bot, storage=storage) engine: Engine = create_engine('sqlite:///app/app.db', echo=True) Session = sessionmaker(bind=engine) session: Session = Session() Base = declarative_base()
from aiogram import Bot, Dispatcher, executor, types from aiogram.dispatcher.filters import Text from aiogram.utils.callback_data import CallbackData from aiogram.utils.exceptions import BotBlocked, MessageNotModified from dotenv import load_dotenv load_dotenv() bot_token = getenv('BOT_TOKEN') if not bot_token: exit('Ошибка: не найден токен') # Объект бота bot = Bot(token=bot_token) # Диспетчер для бота dp = Dispatcher(bot) # Включаем логгирование, чтобы не пропустить важные сообщения logging.basicConfig(level=logging.INFO) # Хендлер на команду /test1 @dp.message_handler(commands='test1') async def cmd_test1(message: types.Message): await message.reply('Test 1') async def cmd_test2(message: types.Message): await message.reply('Test 2') # Второй вариант регистрации хэндлера
API_TOKEN = admin_data["api_token"] # Create admins_id structure: [int, int] ADMINS_IDS = [ list(adm_id.values())[0] for adm_id in [adm_row for adm_row in admin_data["admins_ids"]] ] # Create storage for save message state storage = MemoryStorage() # Configure logging logging.basicConfig(level=logging.INFO) # Initialize bot and dispatcher bot = Bot(token=API_TOKEN) dp = Dispatcher(bot, loop=loop, storage=storage) # Display output information in images (images - True, text - False): image_output = True start_string = "/start - initialization message\n\n"\ "/privat - exchange rates\n\n"\ "/exmo - crypto exchange rates\n\n"\ "/weather - weather data\n\n"\ "/geoposition - take GPS location\n\n" \ "/bot - technical commands" @dp.message_handler(commands=["start"]) @admin_check(ADMINS_IDS)
import logging from aiogram import Bot, Dispatcher from aiogram.contrib.fsm_storage.memory import MemoryStorage import configparser config = configparser.ConfigParser() config.read('.\\config.ini') token = config['bot']['token'] admin_ids = [int(id) for id in config['admins'].values()] bot = Bot(token=token) # Ключ телеграм бота. memory_storage = MemoryStorage() dp = Dispatcher(bot, storage=memory_storage) logging.basicConfig(level=logging.INFO)
def register_handlers_common(dp: Dispatcher, admin_id: int): dp.register_message_handler(cmd_start_help, commands=['start', 'help'], state='*') dp.register_message_handler(cmd_start_help, Text(startswith='⁉', ignore_case=True), state='*') dp.register_message_handler(day_handler, Text(startswith=['🕌', '🕋']), state='*') dp.register_message_handler(date_handler, Text(startswith='📆'), state='*'), dp.register_callback_query_handler(process_simple_calendar, simple_cal_callback.filter(), state='*') dp.register_message_handler(next_handler, Text(startswith='⏰'), state='*')
from aiogram import Bot, Dispatcher, executor from tortoise import Tortoise from aiogram.contrib.fsm_storage.memory import MemoryStorage from loguru import logger import config import handlers import middlewares storage = MemoryStorage() telegram_bot = Bot(token=config.TELEGRAM_BOT_TOKEN) dp = Dispatcher(telegram_bot, storage=storage) def on_startup(): logger.info("Register handlers...") # Register you handlers here. handlers.default.setup(dp) handlers.mcping.setup(dp) handlers.actions.setup(dp) dp.middleware.setup(middlewares.UserMiddleware()) async def database_init(): await Tortoise.init( db_url='sqlite://db.sqlite3', modules={'model': ['models.user', 'models.action', 'models.chats']}) await Tortoise.generate_schemas() logger.info("Tortoise inited!") if __name__ == "__main__":
def register_handlers_common(dp: Dispatcher): dp.register_callback_query_handler(confirmed_order, text='confirmed', state='*') dp.register_callback_query_handler(canceled_order, text='canceled', state='*') dp.register_message_handler(process_start, commands=['start'], state=None) dp.register_message_handler(back_to_process_start, Text(contains='назад', ignore_case=True), state=MainStates.started) dp.register_message_handler(process_cmd_start, Text(startswith='🍴'), state=None) dp.register_message_handler(process_to_cart, Text(contains='корзина', ignore_case=True), state='*') dp.register_message_handler(make_order, Text(contains='оформить заказ', ignore_case=True), state=MainStates.cart) dp.register_message_handler(pickup, Text(contains='самовывоз', ignore_case=True), state=Order.delivery_method) dp.register_message_handler(send_address, Text(contains='доставка', ignore_case=True), state=Order.delivery_method) dp.register_message_handler(back_to_start, Text(contains='на главную', ignore_case=True), state=Order.shipping) dp.register_message_handler(back_to_del_method, Text(contains='назад', ignore_case=True), state=Order.shipping) dp.register_message_handler(fetch_address, state=Order.shipping, content_types=[ContentType.LOCATION, ContentType.TEXT]) dp.register_message_handler(back_to_del_method, Text(contains='назад', ignore_case=True), state=Order.payments) dp.register_message_handler(back_to_cart, Text(contains='назад', ignore_case=True), state=Order.delivery_method) dp.register_message_handler(fetch_payment_method, state=Order.payments) dp.register_message_handler(cancel_order, Text(contains='отменить', ignore_case=True), state=Order.final) dp.register_message_handler(confirm_order, Text(contains='заказываю!', ignore_case=True), state=Order.final) dp.register_message_handler(process_menu, Text(contains='Меню', ignore_case=True), state=MainStates.started) dp.register_message_handler(process_section_test1, Text(equals='Тестовая секция'), state=MainStates.menu) dp.register_message_handler(process_section_test2, Text(equals='Тестовая секция 2'), state=MainStates.menu) dp.register_message_handler(back_to_start, Text(contains='назад', ignore_case=True), state=MainStates.menu) dp.register_message_handler(make_order, Text(contains='оформить заказ', ignore_case=True), state=MainStates.menu) dp.register_message_handler(back_to_start, Text(contains='на главную', ignore_case=True), state=MenuStates.choose_product) dp.register_message_handler(process_menu, Text(contains='назад', ignore_case=True), state=MenuStates.choose_product) dp.register_message_handler(process_product_showall, Text(contains='Список', ignore_case=True), state=MenuStates.choose_product) dp.register_message_handler(process_product, state=MenuStates.choose_product) dp.register_message_handler(process_menu, Text(contains='назад', ignore_case=True), state=MenuStates.select_quantity) dp.register_message_handler(process_quantity, state=MenuStates.select_quantity) dp.register_message_handler(delete_from_cart, Text(startswith='❌'), state=MainStates.cart) dp.register_message_handler(delete_all, Text(startswith='🔄'), state=MainStates.cart) dp.register_message_handler(process_menu, Text(contains='назад', ignore_case=True), state=MainStates.cart) dp.register_message_handler(back_to_start, Text(contains='назад', ignore_case=True), state=MainStates.search) dp.register_message_handler(search_section, Text(contains='поиск', ignore_case=True), state=MainStates.started) dp.register_message_handler(search, state=MainStates.search) dp.register_message_handler(show_contacts, Text(contains='наши контакты', ignore_case=True), state=MainStates.started) dp.register_message_handler(send_feedback, Text(contains='оставить отзыв', ignore_case=True), state=MainStates.started) dp.register_message_handler(back_to_start, Text(contains='назад', ignore_case=True), state=MainStates.feedback) dp.register_message_handler(fetch_feedback, state=MainStates.feedback, content_types=ContentType.TEXT) dp.register_message_handler(open_settings, Text(contains='настройки', ignore_case=True), state=MainStates.started) dp.register_message_handler(back_to_start, Text(contains='на главную', ignore_case=True), state=MainStates.settings) dp.register_message_handler(change_number, Text(contains='изменить номер', ignore_case=True), state=MainStates.settings) dp.register_message_handler(fetch_number, state=SettingStates.change_number, content_types=ContentType.CONTACT) dp.register_message_handler(back_to_num_section, Text(contains='назад', ignore_case=True), state=SettingStates.change_number) dp.register_message_handler(echo, state = '*')
def register_callbacks_reports(dp: Dispatcher): dp.register_callback_query_handler(callbacks_on_report_msg, report_msg_cb.filter())
with open("config.json", "r") as fh: raw_data = fh.read() config = load_json(raw_data) except Exception as e: print("Could not open config. Error: " + str(e)) if __name__ == "__main__": """ Main is located on top because decorators need a dispatcher object, which is created here """ load_config() if config: bot = Bot(token=config["BOT_TOKEN"]) bot_dispatcher = Dispatcher(bot) @bot_dispatcher.message_handler(commands=["start", "help"]) async def welcome_handler(message: types.Message) -> None: """Sends welcome message on /start command""" await message.reply(config["WELCOME_MESSAGE"]) @bot_dispatcher.message_handler() async def search_handler(message: types.Message) -> None: """ Checks if sent message is a EN Wiki article and sends the result back. """ try: url = urlparse(message.text)
from aiogram import Bot, Dispatcher import config from aiogram.contrib.fsm_storage.memory import MemoryStorage import asyncio import logging from pool import create_pool loop = asyncio.get_event_loop() bot = Bot(token=config.TOKEN) storage = MemoryStorage() dp = Dispatcher(bot=bot, storage=storage, loop=loop) db = loop.run_until_complete(create_pool()) logging.basicConfig( format= u'%(filename)s [LINE:%(lineno)d] #%(levelname)-8s [%(asctime)s] %(message)s', level=logging.INFO)
from aiogram import Bot, Dispatcher, types from aiogram.contrib.fsm_storage.memory import MemoryStorage from data import config bot = Bot(token=config.BOT_TOKEN, parse_mode=types.ParseMode.HTML) storage = MemoryStorage() dp = Dispatcher(bot, storage=storage) dp.polls_storage = config.POLLS_STORAGE
logging.basicConfig(level=logging.INFO) class answers(StatesGroup): your_name = State() your_age = State() sum1 = State() sum2 = State() wonders = State() grey = State() TOKEN = "700440860:AAFGbpZvobF0YxB37zw1092hfp8Bq7xB6zM" bot = Bot(TOKEN) dp = Dispatcher(bot, storage=MemoryStorage()) dp.middleware.setup(LoggingMiddleware()) @dp.message_handler(commands=['start', 'restart'], state='*') async def name(message: types.Message, state: FSMContext): async with state.proxy() as storage: storage["count_right_answers"] = 0 await message.answer('Привет! Как тебя зовут?') await answers.your_name.set() @dp.message_handler(state=answers.your_name) async def age(message: types.Message, state: FSMContext): async with state.proxy() as storage: storage['name'] = message.text
def register_admin(dp: Dispatcher): dp.register_callback_query_handler(approve_suggestion, suggestion_cb.filter(), state="*")
import asyncio from aiogram import Bot, Dispatcher, executor, types from aiogram.contrib.fsm_storage.memory import MemoryStorage from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup import random from User import * user = UserList() bot = Bot(token="your token") storage = MemoryStorage() dp = Dispatcher(bot, storage=storage) #Handler for follow new users in chat and check if user in db or not @dp.message_handler(content_types=["new_chat_members"]) async def handler_new_member(message): if user.Check_User(message.from_user.id) == False: user_name = message.from_user.first_name keyboard = InlineKeyboardMarkup() layer = ["Бот", "Человек", "Вомбат", "Дракон", "Утка"] random.shuffle(layer) for i in layer: if i == "Человек": keyboard.add(InlineKeyboardButton(i, callback_data=2)) else: keyboard.add(InlineKeyboardButton(i, callback_data=1)) await bot.send_message(message.chat.id, "Привет, {0}!\nТы кто ???".format(user_name), reply_markup=keyboard) await message.chat.restrict( message.from_user.id,
async def register_handlers_session(dp: Dispatcher): from bot.handlers.game_init import ( game_end, game_status, session_start, show_themes, question_choose, answer, bot_action, stop_game, stats, ) dp.register_message_handler(game_status, commands="status") dp.register_message_handler(session_start, commands="start_game") dp.register_message_handler(show_themes, commands="themes") dp.register_message_handler(game_end, commands="end") dp.register_message_handler(answer, commands="answer") dp.register_message_handler(stop_game, commands="stop") dp.register_message_handler(stats, commands="stats") dp.register_message_handler(bot_action, content_types=[types.ContentType.TEXT]) dp.register_callback_query_handler(question_choose)