telethon: RuntimeError: There is no current event loop in thread 'WorkerThread1'
I am writing a bot for telegrams, a spammer chat bot writes to a telebot and a spammer downloaded to telegrams like this that's when i wrote api_hash and api_id then i changed the code to auth.py (on telethon)
here's what's edit: phone: typing.Callable[[], str] = lambda: api_namber1,
and more if code_callback is None:
def code_callback(): time.sleep(32) return codee elif not callable(code_callback):
program code:
import telebot
API_TOKEN = ('5089550155:AAHPB2Ud-WrDKKwb7FiPOphSVuNH41LvATw')
bot = telebot.TeleBot(API_TOKEN)
@bot.message_handler(commands=["start"])
def start(message):
bot.send_message(message.chat.id, f'<b>тебя зовут {message.from_user.first_name} З</b>', parse_mode='html')
@bot.message_handler()
def info(message):
if message.text == 'привет':
msg = bot.send_message(message.chat.id, 'Введите api_id:')
bot.register_next_step_handler(msg, input_promocod)
def input_promocod(message):
s = message.text
with open("sdf.py", "a+") as f:
f.write(f"api_id1 ='{s}'\n")
msg1 = bot.send_message(message.chat.id, 'Введите api_hash:')
f.close()
bot.register_next_step_handler(msg1, input_promocod1)
def input_promocod1(message):
s = message.text
with open("sdf.py", "a+") as f:
f.write(f"api_hash1 ='{s}'\n")
msg1 = bot.send_message(message.chat.id, 'Введите namber:')
f.close()
bot.register_next_step_handler(msg1, input_promocod2)
def input_promocod2(message):
s = message.text
with open("sdf.py", "a+") as f:
f.write(f"api_namber1 = '{s}'\n")
f.close()
msg1 = bot.send_message(message.chat.id, 'bpbp[bpbb')
import sd
print('успешно')
I will be very grateful if you help
error code:
File "C:\Users\Рома\Desktop\pythonProject6\venv\lib\site-packages\telethon\client\telegrambaseclient.py", line 322, in __init__
if not callable(getattr(self.loop, 'sock_connect', None)):
File "C:\Users\Рома\Desktop\pythonProject6\venv\lib\site-packages\telethon\client\telegrambaseclient.py", line 474, in loop
return asyncio.get_event_loop()
File "C:\Users\Рома\AppData\Local\Programs\Python\Python39\lib\asyncio\events.py", line 642, in get_event_loop
raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'WorkerThread1'.
and if needed code spamer program:
from telethon.sync import TelegramClient, errors
from time import sleep
from telethon.errors.rpcerrorlist import MessageTooLongError, PeerIdInvalidError
import dbm
from colorama import init, Fore, Back, Style
from sdf import api_id1, api_hash1
print('Наш telegram канал - https://t.me/slivmenss')
init(autoreset=True)
def dbm_base():
file = dbm.open( 'api.dbm' ,'c')
try:
file['api_id']
except:
file['api_id'] = (api_id1)
file['api_hash'] = (api_hash1)
file.close()
return dbm.open( 'api.dbm' ,'r')
file = dbm_base()
api_id = int(file['api_id'].decode())
api_hash = file['api_hash'].decode()
print(api_id1, api_hash)
client = TelegramClient('client', api_id, api_hash)
def dialog_sort(dialog):
return dialog.unread_count
def spammer(client):
def create_groups_list(groups=[]):
for dialog in client.iter_dialogs():
if dialog.is_group:
if dialog.unread_count >= 5:
groups.append(dialog)
return groups
with client:
try:
timer = int(input('@slivmenss - Введите время сна между циклами сообщений(в секундах): '))
except:
print(Fore.RED + '@slivmenss - Вводите цифрами, время должно быть в секундах!')
for m in client.iter_messages('me', 1):
msg = m
print(Fore.GREEN + '@slivmenss - Сообщение выбрано:\n', msg)
while True:
groups = create_groups_list()
groups.sort(key=dialog_sort, reverse=True)
for g in groups[:90]:
try:
client.forward_messages(g, msg, 'me')
print(Fore.GREEN + g.name + ' сообщение отправлено! - @slivmenss')
except errors.ForbiddenError as o:
client.delete_dialog(g)
if g.entity.username != None:
print(Fore.RED + f'Error: {o.message} Аккаунт покинул @{g.entity.username}')
else:
print(Fore.RED + f'Error: {o.message} Аккаунт покинул {g.name}')
except errors.FloodError as e:
print(Fore.RED + f'Error: {e.message} Ожидание {e.seconds} секунд')
sleep(e.seconds)
except PeerIdInvalidError:
client.delete_dialog(g)
except MessageTooLongError:
print(Fore.RED + f'Message was too long ==> {g.name}')
except errors.BadRequestError as i:
print(Fore.RED + f'Error: {i.message}')
except errors.RPCError as a:
print(Fore.RED + f'Error: {a.message}')
print(Fore.GREEN + 'Рассылка закончена!')
print(Fore.GREEN + 'Следущая рассылка через: ' + str(timer) + 'сек.' )
sleep(timer)
groups.clear()
if __name__ == '__main__':
spammer(client)