[英]Async - Await Discord.py Function Problem
我想讓 Discord bot 做一些事情,等待 1 分鍾,然后做一些事情,之后,循環(while 循環)將繼續做同樣的事情,直到我停止程序。
這是我的代碼:
import discord
from discord.ext import commands
import requests
from bs4 import BeautifulSoup
import time
TOKEN = "MyToken!"
bot = commands.Bot(command_prefix='!')
@bot.event
async def on_ready():
print("Started!")
@bot.command(pass_context=True)
async def start_bot():
isAlreadyLive = False
print("Let's get it started! :D")
url = 'someLink'
while True:
soup = BeautifulSoup(requests.get(url).content, 'html.parser')
varName = soup.find('span', {'class': 'firstClass secondClass'})
if varName != None and boolVarName == False:
await bot.say("SAY THIS! :D ")
boolVarName = True
if varName == None:
await bot.say("SAY THIS #2! :D")
boolVarName = False
await time.sleep(60)
print("Refreshed")
bot.run(TOKEN)
為了更清楚:我希望它檢查 varName(來自刮取)是否不等於 None(這意味着它刮取了一些東西)並檢查 boolVar 是否為 True,因為如果為真,它不會發送如果頁面上仍有內容,則每分鍾都會顯示相同的消息。 它每 60 秒刮一次頁面,所以我可以說它正在頁面上尋找一些“更改”。 好吧,我啟動了機器人,它打印了消息……但隨后出現了這個錯誤:
Ignoring exception in command start_bot
Traceback (most recent call last):
File "C:\Users\WiMAX\PycharmProjects\KockarBot\venv\lib\site-packages\discord\ext\commands\core.py", line 50, in wrapped
ret = yield from coro(*args, **kwargs)
File "LiveBot.py", line 27, in start_bot
await time.sleep(60)
TypeError: object NoneType can't be used in 'await' expression
先感謝您!
要使用異步方式睡眠,請執行以下操作:
await asyncio.sleep(60)
如果您正在談論制作循環,那么 discord 對此有一些幫助。 discord.py 有一個名為 tasks 的內置模塊,其中包括循環。 你可以用
from discord.ext import tasks
然后把它放在你的命令定義之前
@tasks.loop(seconds=some_float)
然后,您可以通過將其放入 on_ready 函數來啟動循環
function_name.start()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.