vgbot: "|/home/bot/VGBot/test.py"
import threading, queue
from time import sleep
import asyncio
from telethon.sync import TelegramClient, events
import config as cfg
bot = TelegramClient('Bot', cfg.api_id, cfg.api_hash)
@bot.on(events.NewMessage(pattern=r'^(?i)(idchat){1}$'))
async def echoidchat(event):
channelaa = await bot.get_entity('https://t.me/elvistest')
await bot.send_message(channelaa, 'ответ')
def parseurls():
for x in range(10):
q.put(x)
pass
async def pre_sendmsg():
while True:
if not q.empty():
msg = q.get_nowait()
await sendmsg(msg)
q.task_done()
async def sendmsg(msg):
channel = await bot.get_entity('https://t.me/elvistest')
await bot.send_message(channel, f'ответ из другого потока {msg}')
if __name__ == '__main__':
q = queue.Queue()
parseurls()
bot.start(bot_token=cfg.bot_token)
threading.Thread(target=asyncio.run, daemon=True, args=(pre_sendmsg(),)).start()
bot.run_until_disconnected()
import threading
import asyncio
from telethon.sync import TelegramClient, events
import config as cfg
bot = TelegramClient('Bot', cfg.api_id, cfg.api_hash)
@bot.on(events.NewMessage(pattern=r'^(?i)(idchat){1}$'))
async def echoidchat(event):
# просто команда чтобы видеть что бот в принципе работает
# я знаю что можно вытащить entity из event, но это работает если из чата пришло событие,
# но не работает если бот просто должен отправить в чат сообщение сам
# поэтому вытаскиваю entity из ссылки на чат
# тут всё проходит отлично
channel = await bot.get_entity('https://t.me/elvistest')
await bot.send_message(channel, 'ответ')
async def parseurls():
# а вот тут уже не работает.
# на get_entity выдает RuntimeWarning: coroutine 'UserMethods.get_input_entity' was never awaited
# и не возвращает entity
while True:
channel = await bot.get_entity('https://t.me/elvistest')
await bot.send_message(channel, 'ответ из другого потока')
asyncio.sleep(5)
if __name__ == '__main__':
bot.start(bot_token=cfg.bot_token)
my_thread_flights = threading.Thread(target=asyncio.run, args=(parseurls(),))
my_thread_flights.start()
bot.run_until_disconnected()