Python Async-等待Discord.py函数问题

Python Async-等待Discord.py函数问题,python,bots,discord,discord.py,Python,Bots,Discord,Discord.py,我想让Discord机器人做一些事情,等待1分钟,然后做一些事情,之后,循环(while loop)将继续做同样的事情,直到我停止程序 这是我的密码: import discord from discord.ext import commands import requests from bs4 import BeautifulSoup import time TOKEN = "MyToken!" bot = commands.Bot(command_prefix='!') @bot.eve

我想让Discord机器人做一些事情,等待1分钟,然后做一些事情,之后,循环(while loop)将继续做同样的事情,直到我停止程序

这是我的密码:

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(来自scraping)是否不等于None(这意味着它刮取了一些东西),并检查boolVar是否为真,因为如果为真,如果页面上仍然有一些东西,它不会每分钟发送相同的消息。它每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)

要使用异步睡眠,请执行以下操作:

await asyncio.sleep(60)

如果你说的是做一个循环,那么“不和谐”就是其中的原因。py有一个名为tasks的内置模块,其中包括循环。您可以使用

来自discord.ext导入任务
然后将其放在命令定义之前

@tasks.loop(秒=一些浮点数)
然后,您可以通过将其放入on_ready函数来启动循环

function\u name.start()

如果你说的是做一个循环,那么“不和谐”就是其中的原因。py有一个名为tasks的内置模块,其中包括循环。您可以使用

来自discord.ext导入任务
然后将其放在命令定义之前

@tasks.loop(秒=一些浮点数)
然后,您可以通过将其放入on_ready函数来启动循环

function\u name.start()

改用
asyncio.sleep
。您还应该看看discord.py项目中的后台任务示例:谢谢,它正在工作。还有,我不知道我能不能在这里问一下,但我能不能以某种方式阻止discord机器人?是否有停止程序并关闭机器人的功能?如果不允许在评论中询问,请告诉我,我将立即删除评论!非常感谢。您可以使用
wait bot.logout()
以编程方式完成,也可以手动终止进程。谢谢!它对我帮助很大:DUse
asyncio.sleep
。您还应该看看discord.py项目中的后台任务示例:谢谢,它正在工作。还有,我不知道我能不能在这里问一下,但我能不能以某种方式阻止discord机器人?是否有停止程序并关闭机器人的功能?如果不允许在评论中询问,请告诉我,我将立即删除评论!非常感谢。您可以使用
wait bot.logout()
以编程方式完成,也可以手动终止进程。谢谢!这对我帮助很大:你需要使用
await
你需要使用
await