Async - Await Discord.py Проблема с функцией - PullRequest
0 голосов
/ 26 сентября 2018

Я хотел сделать бот Discord, который будет что-то делать, подождать 1 минуту, затем сделать что-то, после этого цикл (пока цикл) продолжит делать то же самое, пока я не остановлю программу.

Вот мойкод:

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

Заранее спасибо!

1 Ответ

0 голосов
/ 26 сентября 2018

Чтобы спать с помощью асинхронного, сделайте это:

await asyncio.sleep(60)
...