Beispiel #1
0
def setup(dp: Dispatcher):
    """
    Setup handlers
    """

    dp.register_message_handler(start, commands=["start"])
Beispiel #2
0
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)# """
Beispiel #5
0
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())
Beispiel #6
0
def register_user(dp: Dispatcher):
    dp.register_message_handler(user_start, commands=["start"], state="*")
Beispiel #7
0
def register_admin(dp: Dispatcher):
    dp.register_message_handler(admin_start,
                                commands=["start"],
                                state="*",
                                role=UserRole.ADMIN)
Beispiel #8
0
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)
Beispiel #9
0
 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)
Beispiel #12
0
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())
Beispiel #13
0
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)
Beispiel #14
0
async def on_shutdown(dispatcher: Dispatcher):
    dispatcher.stop_polling()
    print(u"Tchau!")
Beispiel #15
0
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
Beispiel #16
0
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()
Beispiel #17
0
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')


# Второй вариант регистрации хэндлера
Beispiel #18
0
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)
Beispiel #19
0
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)
Beispiel #20
0
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='*')
Beispiel #21
0
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__":
Beispiel #22
0
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)
Beispiel #25
0
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)
Beispiel #26
0
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
Beispiel #27
0
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
Beispiel #28
0
def register_admin(dp: Dispatcher):
    dp.register_callback_query_handler(approve_suggestion,
                                       suggestion_cb.filter(),
                                       state="*")
Beispiel #29
0
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)