У меня есть ощущение, как будто я нашел способ укротить автомобиль (о да!), пробив бензобак, приделал палки, впряг лошадь и поехал. Вроде кайф, но что-то не то.
Все дело в том, что я совсем не разбираюсь в async, поэтому сделал как мог. Хочу улучшить, жду советов профессионалов
Задача - отправить сообщения боту и получить ответные сообщения (еще между сообщениями вставить команды для бота, но это не важно)
def get_answer(self, vk_id, msgs, bot_name='aab137'):
api_id, api_hash = self.get_tg_api(vk_id, session_time=60)
client = telethon.TelegramClient('tg_sessions/' + str(api_id), api_id, api_hash)
async def get_answer(self, vk_id, msgs, bot_name):
await client.delete_dialog(bot_name, revoke=False)
msgs_number = self.get_msgs_number(vk_id)
for msg in msgs:
msgs_number += 1
cmds_before, cmds_after = self.config.get((msgs_number, 'before')), self.config.get((msgs_number, 'after'))
if cmds_before:
for cmd in cmds_before:
await client.send_message(bot_name, cmd)
await client.send_message(bot_name, msg)
if cmds_after:
for cmd in cmds_after:
await client.send_message(bot_name, cmd)
time.sleep(5)
ans = await client.get_messages(bot_name, None, from_user=bot_name)
ans = [msg.text for msg in ans]
return ans
with client:
ans = client.loop.run_until_complete(get_answer(self, vk_id, msgs, bot_name))
ans.reverse()
return ans
Что я сделал неправильно, что можно улучшить?