我有关于使用Telethon运行多个函数的问题例如,我想同时使用bot管理命令和tracker函数,所以我知道我应该多线程,但这是我的脚本,我试图同时运行它们,但从来没有同时运行过。
def Checker():
print('I am Running')
while True:
if isStart:
for i in SpesificDictionary:
Element = SpesificDictionary[i]
poster(Element,i)
time.sleep(10)
async def poster(Element,chatId):
text = Element.API.getText()
if text != None:
luckyNews = await randomAds()
if(luckyNews != None):
print(f"Sending to {luckyNews[0]} with {luckyNews[1]}")
text += f"nn <b>🚀 Ad's:</b> '<a href='{luckyNews[0]}'><b>{luckyNews[1]}</b></a>'"
else:
text += f"nn <b>🚀 Ad's:</b> <b>Ads your project📞</b>"
if(len(SpesificButtonAdvertise) != 0):
keyboard = [[Button.url(str(SpesificButtonAdvertise[1]),str(SpesificButtonAdvertise[0]))]]
else:
keyboard = [[Button.url('Advertise your project here 📞', "https://t.me/contractchecker")]]
# chat = BOT.get_entity(-1001639775918) #-1001639775918 test # main -1001799563725 # sohbet : -1001648583714
chat = BOT.get_entity(chatId)
await BOT.send_file(chat, 'giphy.gif', caption= text, buttons= keyboard, parse_mode = 'HTML')
else:
print("Waiting for the next update")
def main():
BOT.start(bot_token=BOT_TOKEN)
loop = asyncio.get_event_loop()
tasks = [loop.create_task(Checker()),
loop.create_task(BOT.run_until_disconnected())]
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
列出的代码有几个问题。
您的def Checker()
不是async def
。当你调用它时,它会立即运行,而loop.create_task(Checker())
根本不起作用。
您正在调用poster
,它是一个async def
,而不使用await
。这意味着它根本不会运行。
您使用的是time.sleep
,它会阻塞整个线程,这意味着asyncio
无法运行其循环,因此创建的任何任务也不会运行。
CCD_ 9也是CCD_。应为await
-版。
检查器看起来像这样:
async def Checker():
print('I am Running')
while True:
if isStart:
for i in SpesificDictionary:
Element = SpesificDictionary[i]
await poster(Element,i)
await asyncio.sleep(10)
别忘了await BOT.get_entity(chatId)
。
但我强烈建议在尝试编写更复杂的代码之前,先阅读asyncio
文档,并对asyncio
更加熟悉。