如何使用Beautiful Soup 4抓取HTML网址修复“ AttributeError:'客户端'对象没有属性'send_message'”

时间:2019-07-14 03:11:01

标签: python python-3.x discord discord.py

我正在尝试从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'

2 个答案:

答案 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)

让我知道它是如何工作的:)