我正在尝试从URL抓取HTML,并让不和谐的机器人显示结果。朋友提供了代码,并对其进行了测试。但是,我相信他使用的是旧版本的discord.py。他目前不可用。我已经搜索了所需的适当更改,但没有找到针对我的问题的特定更改。
我尝试将client.send_message
更改为channel.send
-我收到另一个错误:AttributeError:'NoneType'对象没有属性'send'
import discord
import requests
from bs4 import BeautifulSoup
client = discord.Client()
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
channel = client.get_channel('CHANNEL ID')
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('!dfx2'):
website_url = requests.get('http://novaworld.cc/dfx2lobby.php?lob=pub').text
soup = BeautifulSoup(website_url, 'html.parser')
table = soup.find('table')
test = table.select_one('tr:contains("!GET SOME")')
text = test.get_text()
print(text)
await channel.send(message.channel, content = text)
client.run('TOKEN')
我收到错误AttributeError:更改client.send_message
后'NoneType'对象没有属性'send'
答案 0 :(得分:0)
好吧,我从未使用过bs4,但我会尽力提供帮助。要获得频道,您必须使用
channel = discord.utils.get(message.guild.channels, id=message.channel.id)
然后如果您使用discord.py的新版本(重写),只需使用
发送此消息await channel.send(text)
答案 1 :(得分:0)
您不需要在channel.send内部发送message.channel。我会用这个:
channel = message.channel
await channel.send(content = text)
让我知道它是如何工作的:)