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)
class NLPBot(object): def __init__(self, token): self.bot = Bot(token=token) self.dp = Dispatcher(self.bot) self.surname_predictor = Predictor(weights_path=WEIGHTS_PATH, k=3) self._commands = [] for member in dir(self): member = getattr(self, member) if hasattr(member, 'handler'): args, kwargs = member.handler commands = kwargs.get('commands') if commands: self._commands.extend(map(lambda x: '/' + x, commands)) self.dp.message_handler(*args, **kwargs)(member) @message_handler(commands=['start']) @log async def start(self, message: types.Message): await message.reply("Hi!\n" "My commands are: {}".format(", ".join( self._commands))) @message_handler(commands=['surname']) @log async def surname(self, message: types.Message): args = message.text.split(' ') if len(args) < 2: return name = message.text.split(' ')[1] result = 'Surname origin of {}: \n'.format(name) output = self.surname_predictor(name) for origin, proba in output: result += '{}: {:.3f}%\n'.format(origin, proba) print("Answer: ", result) await message.reply(result) def start_polling(self): executor.start_polling(self.dp)
def run_default(): services, workers, session, gateway = parse_old_config() if CHANNEL == 'cmd_client': endpoint = Service('cmd_responder', EventSetOutputConnector('cmd_responder').send, StateManager.save_dialog_dict, 1, ['responder']) input_srv = Service('input', None, StateManager.add_human_utterance_simple_dict, 1, ['input']) loop = asyncio.get_event_loop() loop.set_debug(args.debug) register_msg, process = prepare_agent( services, endpoint, input_srv, use_response_logger=args.response_logger) if gateway: gateway.on_channel_callback = register_msg gateway.on_service_callback = process future = asyncio.ensure_future(run(register_msg)) for i in workers: loop.create_task(i.call_service(process)) try: loop.run_until_complete(future) except KeyboardInterrupt: pass except Exception as e: raise e finally: future.cancel() if session: loop.run_until_complete(session.close()) if gateway: gateway.disconnect() loop.stop() loop.close() logging.shutdown() elif CHANNEL == 'http_client': if not session: session = ClientSession() intermediate_storage = {} endpoint = Service( 'http_responder', HttpOutputConnector(intermediate_storage, 'http_responder').send, StateManager.save_dialog_dict, 1, ['responder']) input_srv = Service('input', None, StateManager.add_human_utterance_simple_dict, 1, ['input']) register_msg, process_callable = prepare_agent(services, endpoint, input_srv, args.response_logger) if gateway: gateway.on_channel_callback = register_msg gateway.on_service_callback = process_callable app = init_app(register_msg, intermediate_storage, prepare_startup(workers, process_callable, session), on_shutdown, args.debug) web.run_app(app, port=args.port) elif CHANNEL == 'telegram': token = getenv('TELEGRAM_TOKEN') proxy = getenv('TELEGRAM_PROXY') loop = asyncio.get_event_loop() bot = Bot(token=token, loop=loop, proxy=proxy) dp = Dispatcher(bot) endpoint = Service('telegram_responder', EventSetOutputConnector('telegram_responder').send, StateManager.save_dialog_dict, 1, ['responder']) input_srv = Service('input', None, StateManager.add_human_utterance_simple_dict, 1, ['input']) register_msg, process = prepare_agent( services, endpoint, input_srv, use_response_logger=args.response_logger) if gateway: gateway.on_channel_callback = register_msg gateway.on_service_callback = process for i in workers: loop.create_task(i.call_service(process)) tg_msg_processor = TelegramMessageProcessor(register_msg) dp.message_handler()(tg_msg_processor.handle_message) executor.start_polling(dp, skip_updates=True)
@dp.message_handler(commands=['but_1']) async def send(message: types.Message): await bot.send_message(message.from_user.id, "Okk", reply_markup=markup_2) @dp.message_handler(commands=['but2']) async def contact_and_geo(message: types.Message): await bot.send_message( message.from_user.id, "Please give allow for get information in your phone!", reply_markup=markup_request) await bot.send_message(chat_id='@yerekerun', text='You are athlet!') dp.message_handler(commands=['photo']) async def send_photo(message: types.Message): #caption = 'телеграм' await bot.send_photo( message.fr, photo= "https://play.google.com/store/apps/details?id=org.telegram.messenger&hl=ru", caption="Telegram") @dp.message_handler(commands=['remove']) async def remove(message: types.Message): await message.reply("delete all button", reply_markup=ReplyKeyboardRemove())