@lemonlimelike

Как исправить эту ошибку?

Всем привет! Появилась такая ошибка:
/home/home/.local/lib/python3.6/site-packages/telebot/util.py:60: RuntimeWarning: coroutine 'take_message' was never awaited
  task(*args, **kwargs)


Как исправить?

Вот код:

# -*- coding: utf-8 -*-
import telebot
import asyncio

from telegram_client import TelegramSession as ts

api_id = ********************** # этот id вы получаете при создание приложения
api_hash = '***********************' # и этот тоже
username = '***************' # ваше имя в тг
id_channel = -***************** # id вашего канала
token = '********************' # токен вашего бота

bot = telebot.TeleBot(token)
client = ts(api_id,api_hash,username)

@bot.message_handler(content_types=['text'])
async def take_message(message):
	if '@' in message.text and ',' in message.text:
		channels = message.text.split(',')
		my_channel = channels[-1]
		parse_channel = channels[0:-1]
		await client.add_task(parse_channel,my_channel)
	else:
		return bot.send_message(message.chat.id,'<b>Проверьте правильность ввода!</b>',parse_mode='html')

if __name__ == '__main__':
	bot.polling(none_stop=True)


А это код модуля telegram_client:
from telethon import TelegramClient,sync,events,utils
import asyncio

class TelegramSession:
	def __init__(self,api_id,api_hash,username):
		self.__loop = asyncio.new_event_loop()
		asyncio.set_event_loop(self.__loop)
		self.client = TelegramClient(username, api_id, api_hash,loop=self.__loop)
		self.client.start()

	async def handler_channel(self,parse_channel,my_channel):
		#print(parse_channel)
		@self.client.on(events.NewMessage(chats=parse_channel))
		async def normal_handler(event):
			await self.client.send_message(my_channel,event.message)

	async def list_tasks(self):
		pass

	async def add_task(self,parse_channel,my_channel):
		print(parse_channel)
		await self.__loop.create_task(self.handler_channel(parse_channel,my_channel))

	async def stop_task(self,something):
		pass

	def run_until(self):
		self.client.run_until_disconnected()
  • Вопрос задан
  • 1872 просмотра
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Для асинхронной работы нужно использовать
telebot.AsyncTeleBot()
вместо
telebot.TeleBot()

И async не нужен перед функцией, если не ошибаюсь
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы