【发布时间】:2018-06-05 20:33:27
【问题描述】:
嗯,我正在使用 Python3 开发一个 Discord 机器人,它在某种程度上可以工作,但每隔几分钟就会崩溃一次。它给了我一个错误,例如“任务已被破坏,但它正在等待处理”。现在,我搜索了问题并发现了我必须摆脱我的 response = request.get(url) 并将其替换为“async with aiohttp.get(url) as response”的信息。现在,当我拥有它时,它给了我“从未等待过协程'可用性'”。为了解决这个问题,我认为我必须使用某种循环,但我对异步的东西还很陌生,所以我一无所知。
import discord
from discord.ext.commands import Bot
from discord.ext import commands
import asyncio
import time
import requests
from bs4 import BeautifulSoup
import smtplib
import aiohttp
import async_timeout
async def availability():
url = "some url"
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
async with aiohttp.ClientSession().get(url, headers=headers) as response:
soup = BeautifulSoup(response.text, "lxml")
print(soup)
return soup
Client = discord.Client()
bot_prefix= "?"
client = commands.Bot(command_prefix=bot_prefix)
availible = True
@client.event
async def on_ready():
print("Bot Online!")
print("Name: {}".format(client.user.name))
print("ID: {}".format(client.user.id))
bessie = 0
waittime = 0
while True:
time.sleep(1)
if wachttijd == 0:
if ("0 available") not in str(availability()):
bessie = bessie + 1
if bessie == 3:
await client.send_message(discord.Object(id='some id'),
'<@&some channel>some text!')
print("available")
bessie = 0
waittime = 10
else:
bessie = 0
else:
wachttijd = wachttijd - 1
client.run("token")
有人可以帮我解决这个问题吗?
【问题讨论】:
-
您需要使用
await availability()。
标签: python python-3.x python-asyncio discord discord.py