@Kiril-cloud

Python telebot и telethon ошибка There is no current event loop in thread 'WorkerThread1'?

Вот мой код:
from telethon import TelegramClient, sync
import telebot
import asyncio
from telebot.types import ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton


menu = ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
oder = KeyboardButton('Заказать рассылку')
info = KeyboardButton('Информация о сервисе')
tarif = KeyboardButton('Тарифы')
menu.add(oder, tarif).add(info)

bot = telebot.TeleBot(токен)


@bot.message_handler(commands=['start'])
def start(message):
	bot.send_message(message.chat.id, 'Привет, я бот который поможет тебе сделать рассылку сообщений по целевой аудитории и привлечь заказчиков в аш бизнес.', reply_markup=menu)
	

@bot.message_handler(content_types = ['text'])
def messages(message):	
	if message.text == 'Заказать рассылку':
		bot.send_message(message.chat.id, 'Пришлите канал или чат с целевой аудиторией для рассылки')
		loop = asyncio.new_event_loop()
		asyncio.set_event_loop(loop)
		bot.register_next_step_handler(message,send_message)
		
		
def send_message(message):
	try:
		api_id = апи ид
		api_hash = 'апи хеш'
		client = TelegramClient('имя', api_id, api_hash)
		client.start()
		channel = client.get_entity(message.text)
		c = client.get_participants(channel, limit=1000)
			
		for user in c:
			print(user)
			client.send_message(user.username, 'Hello. This is test message.')
		#bot.send_message(message.chat.id, 'Сообщения отправлены!')
	except Exception as e:
		print(e)
		
bot.polling()

Когда дело доходит до функции send_message выдает ошибку: There is no current event loop in thread 'WorkerThread1
  • Вопрос задан
  • 1906 просмотров
Решения вопроса 1
@agent_2203
Потому что не нужно смешивать мгнопоточный код с асинхронным. Используйте либо одну библиотеку, либо другую.


Либо на крайний случай

from asyncio import set_event_loop, new_event_loop
set_event_loop(new_event_loop())
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@KirillGreenev
Была такая же проблема решил так:
q = Queue()
p1 = Process(target=имя_функции_парсера, args=(message.chat.id, q), daemon=True) # открываем её в новом процессе
p1.start()
members_grup = q.get() # получаем результат , в самой функции пишем q.put(' '.join(string))
p1.join()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы