예제 #1
0
def initialize_bot():
    executor.start_polling(
        dp,
        on_startup=on_startup,
        on_shutdown=on_shutdown,
        skip_updates=True,
    )
예제 #2
0
    def main(self):
        log.info('run serve subcommand')

        token = Core.config.telegram.api_token()
        if type(token) is not str:
            log.critical(
                'Can not find "telegram:api_token" in config. Exiting.')
            exit(1)

        self._bot = Bot(token=Core.config.telegram.api_token())
        dp = Dispatcher(self._bot)

        self._processor = VolleyProcessor(
            YandexTranslate(Core.config.yandex_translate.api_key()),
            ChatScript(Core.config.chatscript.host(),
                       Core.config.chatscript.port(), 'botan'))

        dp.register_message_handler(self.send_welcome,
                                    commands=['start', 'help'])
        dp.register_message_handler(self.everything)

        start_polling(
            dp,
            skip_updates=True,
            # on_startup=self.on_startup,
            # on_shutdown=self.on_shutdown
        )
예제 #3
0
def main():
    """Start bot in webhook mode.

    Bot's main entry point.
    """
    bot.setup()
    if config.SET_WEBHOOK:
        url_token = secrets.token_urlsafe()
        webhook_path = config.WEBHOOK_PATH + "/" + url_token

        executor.start_webhook(
            dispatcher=dp,
            webhook_path=webhook_path,
            on_startup=lambda *args: on_startup(webhook_path, *args),
            on_shutdown=lambda *args: close_blockchains(),
            host=config.INTERNAL_HOST,
            port=config.SERVER_PORT,
        )
    else:
        executor.start_polling(
            dispatcher=dp,
            on_startup=lambda *args: on_startup(None, *args),
            on_shutdown=lambda *args: close_blockchains(),
        )
    print()  # noqa: T001  Executor stopped with ^C

    # Stop all background tasks
    loop = asyncio.get_event_loop()
    for task in asyncio.all_tasks(loop):
        task.cancel()
        try:
            loop.run_until_complete(task)
        except asyncio.CancelledError:
            pass
예제 #4
0
def main() -> NoReturn:
    create_connection('language_bot_db.db')
    check_db_exists()
    executor.start_polling(dispatcher,
                           skip_updates=True,
                           timeout=60,
                           on_shutdown=on_shutdown)
예제 #5
0
def main():
    setup_logging()
    bot = Bot(token=BOT_TOKEN, parse_mode='html')
    dp = make_dispatcher(bot)
    executor.start_polling(dp,
                           on_startup=on_startup,
                           on_shutdown=on_shutdown,
                           skip_updates=True)
예제 #6
0
def main(config: dict):
    # Bot, storage, dispatcher and telegram_api_server instances
    bot = Bot(**config["app"]["bot"])
    storage = MemoryStorage()
    dp = Dispatcher(bot, storage=storage)
    bot[APP_CONFIG_KEY] = config

    start_polling(dp, on_startup=on_startup, on_shutdown=on_shutdown)
예제 #7
0
파일: __init__.py 프로젝트: rougeth/i17obot
def run():
    if config.SENTRY_DSN:
        sentry_sdk.init(config.SENTRY_DSN)

    middlewares.setup(dp)
    import i17obot.handlers

    executor.start_polling(dp, skip_updates=True)
예제 #8
0
def start_polling():
    dispatcher = Dispatcher(bot.obj)
    dispatcher.middleware.setup(LoggingMiddleware())

    admin.init(dispatcher)
    auth.init(dispatcher)
    cashier.init(dispatcher)

    executor.start_polling(dispatcher, skip_updates=True)
예제 #9
0
def run_tg(token, proxy, agent):
    loop = asyncio.get_event_loop()
    bot = Bot(token=token, loop=loop, proxy=proxy)
    dp = Dispatcher(bot)
    tg_msg_processor = TelegramMessageProcessor(agent.register_msg)

    dp.message_handler()(tg_msg_processor.handle_message)

    executor.start_polling(dp, skip_updates=True)
예제 #10
0
def main():
    executor.start_polling(dp, skip_updates=True)
    logging.basicConfig(level=logging.INFO)
    start_webhook(
        dispatcher=dp,
        webhook_path=WEBHOOK_PATH,
        skip_updates=True,
        host=WEBAPP_HOST,
        #port=WEBAPP_PORT
    )
예제 #11
0
def use_polling():
    start_polling(
        dispatcher=dp,
        on_startup=on_startup_for_polling,
        on_shutdown=on_shutdown_for_polling,
        skip_updates=bot_section.APP_BOT_SKIP_UPDATES,
        timeout=bot_section.APP_BOT_TIMEOUT,
        relax=bot_section.APP_BOT_RELAX,
        fast=bot_section.APP_BOT_FAST
    )
예제 #12
0
파일: main.py 프로젝트: Fadesml/ccam
 def start(self) -> None:
     if self.mode == Frameworks.AIOGRAM:
         from aiogram.utils import executor
         executor.start_polling(self.dp,
                                skip_updates=True,
                                on_startup=self._events["on_startup"],
                                on_shutdown=self._events["on_shutdown"])
     elif self.mode == Frameworks.VKWAVE:
         self._task_manager.add_task(self.bot.run)
         self._task_manager.run(on_startup=self._events["on_startup"],
                                on_shutdown=self._events["on_shutdown"])
예제 #13
0
def main():
    args = _parse_args()

    dispatcher = prepare(
        logs_dir=args.logs_dir,
        telegram_api_token=args.telegram_api_token,
        text_generator_service_url=args.text_generator_service_url,
        text_generator_service_login=args.text_generator_service_login,
        text_generator_service_password=args.text_generator_service_password)

    executor.start_polling(dispatcher, skip_updates=True)
예제 #14
0
파일: bot_service.py 프로젝트: Forevka/Emcd
def start_polling(token: str, connection_string: str):
    bot = init_bot(token)
    dp = init_dispatcher(bot)

    dp["connection_string"] = connection_string

    bind_filters(dp)
    register_middlewares(dp)
    register_handlers(dp)

    executor.start_polling(dp, skip_updates=True, on_startup=on_startup)
예제 #15
0
def telegram_polling():
    try:
        executor.start_polling(
            dp, skip_updates=True)  #constantly get messages from Telegram
    except:
        traceback_error_string = traceback.format_exc()
        with open("Error.Log", "a") as myfile:
            myfile.write("\r\n\r\n" + time.strftime("%c") +
                         "\r\n<<ERROR polling>>\r\n" + traceback_error_string +
                         "\r\n<<ERROR polling>>")
        time.sleep(10)
        telegram_polling()
예제 #16
0
def start(stamp):
    if os.environ.get('local'):
        threads = [logger, google_update]
        Auth.dev.printer(f'Запуск бота локально за {time_now() - stamp} сек.')
    else:
        Auth.dev.start(stamp)
        threads = [logger, google_update, google_files, auto_reboot, alt_image]
        Auth.dev.printer(f'Бот запущен за {time_now() - stamp} сек.')

    for thread_element in threads:
        _thread.start_new_thread(thread_element, ())
    executor.start_polling(dispatcher, allowed_updates=objects.allowed_updates)
예제 #17
0
    def test_bot():
        # Setup Django environment
        print('Setting Django environment...')
        os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'crypto_bot.settings')
        django.setup()

        # Import necessary objects
        print('Importing modules...')
        from bot.sources.bot import dp, startup, shutdown

        # Start bot
        print('Starting bot...')
        executor.start_polling(dp,
                               skip_updates=True,
                               on_startup=startup,
                               on_shutdown=shutdown)
예제 #18
0
def main():
    if os.environ.get("DATABASE_URL"):
        logging.basicConfig(level=logging.INFO)
        start_webhook(
            dispatcher=dp,
            webhook_path=WEBHOOK_PATH,
            skip_updates=True,
            on_startup=on_startup,
            host=WEBAPP_HOST,
            port=WEBAPP_PORT,
        )
    else:
        try:
            executor.start_polling(dp)
        except KeyboardInterrupt:
            exit(0)
def main(arguments):
    args = parser.parse_args(arguments)
    token = args.token
    sock = args.sock
    host = args.host
    port = args.port
    cert = args.cert
    pkey = args.pkey
    host_name = args.host_name or host
    webhook_port = args.webhook_port or port
    webhook_path = args.webhook_path

    # Fi webhook path
    if not webhook_path.startswith('/'):
        webhook_path = '/' + webhook_path

    # Generate webhook URL
    webhook_url = f"https://{host_name}:{webhook_port}{webhook_path}"

    # Create bot & dispatcher instances.
    bot = Bot(token)
    dispatcher = Dispatcher(bot)

    if (sock or host) and host_name:
        if cert and pkey:
            ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
            ssl_context.load_cert_chain(cert, pkey)
        else:
            ssl_context = None

        start_webhook(dispatcher,
                      webhook_path,
                      on_startup=functools.partial(on_startup,
                                                   url=webhook_url,
                                                   cert=cert),
                      on_shutdown=on_shutdown,
                      host=host,
                      port=port,
                      path=sock,
                      ssl_context=ssl_context)
    else:
        start_polling(dispatcher,
                      on_startup=on_startup,
                      on_shutdown=on_shutdown)
예제 #20
0
파일: core.py 프로젝트: polak228/WikiBot
    def start(self):
        bot = Bot(self.token)
        dp = Dispatcher(bot)

        #/start:
        @dp.message_handler(commands=["start"])
        async def process_start_command(message: types.Message):
            await bot.send_message(message.from_user.id, temp.start_message)

        #/help:
        @dp.message_handler(commands=["help"])
        async def process_start_command(message: types.Message):
            await bot.send_message(message.from_user.id, temp.help_message)

        #messages:
        @dp.message_handler()
        async def echo_message(message: types.Message):
            try:
                result = wikipedia.summary(message.text)
            except:
                result = temp.error_message
            finally:
                await bot.send_message(message.from_user.id, result)

        #stickers:
        @dp.message_handler(content_types=["sticker"])
        async def echo_message(message: types.Message):
            await bot.send_message(message.from_user.id,
                                   "Я не умею понимать стикеры.")

        #photos:
        @dp.message_handler(content_types=["photo"])
        async def echo_message(message: types.Message):
            await bot.send_message(message.from_user.id,
                                   "Я не умею смотреть фотки.")

        #videos:
        @dp.message_handler(content_types=["video"])
        async def echo_message(message: types.Message):
            await bot.send_message(message.from_user.id,
                                   "Я не умею декодировать видео.")

        executor.start_polling(dp)
예제 #21
0
def start_bot(mode, config):

    api = config["general"]["api"]

    token = api["token"]
    webhook_url = URL(api["webhook"]["url"]) if api["webhook"]["url"] else None
    cert = api["webhook"]["cert"]
    pkey = api["webhook"]["pkey"]
    proxy_url = api["proxy"]["url"]

    if not api["proxy"]["login"] or not api["proxy"]["password"]:
        proxy_auth = None
    else:
        proxy_auth = BasicAuth(login=api["proxy"]["login"],
                               password=api["proxy"]["password"])

    # Create bot & dispatcher instances.
    bot = Bot(token, proxy=proxy_url, proxy_auth=proxy_auth)
    dispatcher = Dispatcher(bot)
    dispatcher["config"] = config
    logger.info(f"Initialize dispatcher: {dispatcher}")

    if mode == "webhook":
        if cert and pkey:
            ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
            ssl_context.load_cert_chain(cert, pkey)
        else:
            ssl_context = None

        start_webhook(dispatcher,
                      webhook_url.path,
                      on_startup=on_startup,
                      url=str(webhook_url),
                      cert=cert,
                      on_shutdown=on_shutdown,
                      host=webhook_url.host,
                      port=webhook_url.port,
                      ssl_context=ssl_context)
    else:
        start_polling(dispatcher,
                      on_startup=on_startup,
                      on_shutdown=on_shutdown)
예제 #22
0
파일: bot.py 프로젝트: Pummas/Bot-Tg-class
    def run(self):
        dp = Dispatcher(self.bot)

        @dp.message_handler(commands=['start'])
        async def process_start_command(message: types.Message):
            await message.reply("Привет!\nНапиши мне что-нибудь!")

        @dp.message_handler(commands=['help'])
        async def process_help_command(message: types.Message):
            await message.reply(
                "Напиши мне что-нибудь, и я отпрпавлю этот текст тебе в ответ!"
            )

        @dp.message_handler()
        async def echo_message(msg: types.Message):
            await self.bot.send_message(msg.from_user.id, msg.text)
            self.repository.save_message(msg.from_user.id, msg.text,
                                         datetime.datetime.now())

        executor.start_polling(dp)
예제 #23
0
def main():
    try:
        db.create_pool()
        with db.get_connection() as conn:
            db.create_schema(conn)

        if settings.WEBHOOK_ENABLED:
            start_webhook(
                dispatcher=dp,
                webhook_path=settings.WEBHOOK_PATH,
                skip_updates=True,
                on_startup=bot_startup,
                host=settings.WEBAPP_HOST,
                port=settings.WEBAPP_PORT,
            )
        else:
            executor.start_polling(dp,
                                   on_startup=bot_startup,
                                   on_shutdown=bot_shutdown)
    finally:
        db.close_pool()
예제 #24
0
 def start(self):
     """Register message handlers, and start the bot"""
     commands_mapping = [
         (['link'], self.link_account),
         (['list'], self.list_requests),
         (['note'], self.set_note),
         (['ping'], self.ping),
         (['passwd'], self.set_password),
         (['search'], self.search_requests),
         (['whoami'], self.whoami),
         (['register'], self.register),
         (['edit_desc'], self.edit_desc),
         (['claim', 'unclaim'], self.claim_request),
         (['start', 'help'], self.show_help),
         (['done', 'reject', 'reopen'], self.set_status),
         (['pakreq', 'updreq', 'optreq'], self.new_request)
     ]
     for command in commands_mapping:
         logging.info('Registering command: %s' % command[0])
         self.dp.register_message_handler(command[1], commands=command[0])
     executor.start_polling(self.dp)
예제 #25
0
def set_up_app() -> None:
    """

    :return:
    """
    logging.basicConfig(filename="base.log", level=logging.INFO)

    log = logging.getLogger("bot")

    uvloop.install()
    vars_json = var.Var()
    loop = asyncio.get_event_loop()
    loop.run_until_complete(
        vars_json.set_var_from_file(path=os.path.abspath("config.json")))
    bot = Bot(token=vars_json.token,
              loop=loop,
              parse_mode=types.ParseMode.HTML)
    dp = Dispatcher(bot, storage=MemoryStorage())
    dp.middleware.setup(LoggingMiddleware())
    register(dp=dp, logger=log)
    executor.start_polling(dp, on_shutdown=shutdown, loop=loop)
예제 #26
0
def init():
    evloop = asyncio.new_event_loop()
    asyncio.set_event_loop(evloop)

    logger.info("Don't forget to check proxy settings!")

    bot_extra_settings = {}
    if settings.TELEGRAM_PROXY:
        bot_extra_settings['proxy'] = settings.TELEGRAM_PROXY

    bot = aiogram.Bot(settings.MASTERMIND_BOT_CONFIG["token"], **bot_extra_settings,)

    dsp = Dispatcher(bot)
    register_handlers(dsp)

    # check connection
    me = evloop.run_until_complete(dsp.bot.me)
    logger.info(me)

    init_rpc(evloop, bot)
    executor.start_polling(dsp)
예제 #27
0
def main():
    if config.USE_WEBHOOK:
        app = get_new_configured_app(dp, config.WEBHOOK_PATH)

        app.on_startup.append(on_startup)
        if not config.HEROKU:
            app.on_shutdown.append(on_shutdown)

        context = None
        if config.CUSTOM_SSL_CERT:
            context = ssl.SSLContext()
            context.load_cert_chain(config.SSL_CERT, config.SSL_PRIV)

        run_app(app, port=config.WEBHOOK_LOCAL_PORT, ssl_context=context)

    else:
        async def proxy_login(*args, **kwargs):
            await api.login()

        try:
            start_polling(dp, loop=loop, skip_updates=True, on_startup=proxy_login)
        except KeyboardInterrupt:
            print('goodbye')
            dp.stop_polling()
예제 #28
0
    msg_payload = get_choose_categories_msg_payload(activity, categories)
    await bot.send_message(u.id, msg_payload['msg'], **msg_payload['payload'])


@dp.callback_query_handler(lambda c: 'act_id' in c.data)
async def finish_activity(callback_query: types.CallbackQuery):
    await bot.answer_callback_query(callback_query.id)
    data = json.loads(callback_query.data)
    user = callback_query.from_user

    try:
        activity_id, category_id = data['act_id'], data['cat_id']
        db.stop_activity(activity_id, category_id)
    except DoesNotExist:
        reply = 'Промежуток уже был заполнен'
    except RuntimeError:
        reply = 'Ошибка на сервере! Как сказал инженер Чернобыльской АЭС: "...Упс"'
    else:
        _, _, category_name = db.get_category(category_id)
        reply = f'Заполнено: `{category_name}`'

    await bot.send_message(user.id, reply, parse_mode='Markdown')


if __name__ == '__main__':
    from aiogram.utils import executor

    db.migrate()
    executor.start_polling(dp, skip_updates=True)
        await message.answer(messages.FINISH_MESSAGE,
                             reply_markup=keyboard.create_keyboard(
                                 keyboard.COMMANDS, one_time_keyboard=False),
                             parse_mode='HTML')
        await UserStates.START.set()

    elif content == 'restart':
        # Start pathfinder from beginning
        await message.answer(messages.RESTART_MESSAGE, parse_mode='HTML')
        await state.update_data(step=0)

        await message.answer(messages.reply_message(await state.get_data()),
                             reply_markup=keyboard.create_keyboard(
                                 keyboard.PATHFINDER_BUTTONS['navigation']),
                             parse_mode='HTML')
        await UserStates.BUILDING.set()


@dp.message_handler(state='*')
async def process_unknown(message: types.Message):
    await message.answer(messages.UNKNOWN_COMMAND_MESSAGE, parse_mode='HTML')


async def shutdown(dispatcher: Dispatcher):
    await dispatcher.storage.close()
    await dispatcher.storage.wait_closed()


if __name__ == '__main__':
    executor.start_polling(dp, on_shutdown=shutdown)
예제 #30
0
@dp.message_handler(content_types=['photo'])
async def echo_image(msg: types.Message):
    file_id = msg['photo'][-1]['file_id']
    path = save_path + file_id + '.jpg'
    await msg.reply("Файл загружен, добавьте следующий или завершите работу.")
    await msg.photo[-1].download(path)
    path = await evaluate(path)
    if msg.from_user.id in files_paths.keys():
        files_paths[msg.from_user.id].append(path)
    else:
        files_paths[msg.from_user.id] = [path]

    # await bot.send_photo(msg.from_user.id, aaa)


@dp.message_handler(commands=['finish'])
async def finish_uploading(msg: types.Message):
    await msg.reply("Ожидайте обработки.")
    if msg.from_user.id not in files_paths.keys():
        await bot.send_message(msg.from_user.id, "А где изображения?")
    else:
        for path in files_paths[msg.from_user.id]:
            file = InputFile(path)
            await bot.send_photo(msg.from_user.id, file)
        files_paths[msg.from_user.id] = []
        # await bot.send_message(msg.from_user.id, "К сожалению, модель не отвечает. Возможно, сервер не запущен, обратитесь к администратору.")


if __name__ == '__main__':
    executor.start_polling(dp)
예제 #31
0
import asyncio
from typing import Optional

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

loop = asyncio.get_event_loop()

bot = Bot(token=API_TOKEN, loop=loop)

bot = Bot(token=API_TOKEN, loop=loop)
# For example use simple MemoryStorage for Dispatcher.
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)

@dp.message_handler(commands=['start'])
async def cmd_start(message: types.Message):
	await message.reply(message.chat.first_name)

if __name__ == '__main__':
    executor.start_polling(dp, loop=loop, skip_updates=True)