bor*_*ris 6 python discord pycord
我正在使用 Discord API 并注意到我无法访问消息的内容。
这是我的代码:
import discord
client = discord.Client()
@client.event
async def on_ready():
print(f'Logged in as {client.user}')
@client.event
async def on_message(message):
if 'My Name' in message.author.name:
print(f'Author: {message.author.name}')
print(f'Content: {message.content}')
print(f'Clean_Content: {message.clean_content}')
print(f'System_Content: {message.system_content}')
client.run(TOKEN, bot=False)
Run Code Online (Sandbox Code Playgroud)
请注意,由于显而易见的原因,令牌和我的用户名在本文中保持私密。
无论消息如何,这都是我得到的输出:
Author: My Name
Content:
Clean_Content:
System_Content:
Run Code Online (Sandbox Code Playgroud)
如您所见,我还尝试了 clean_content 和 system_content 属性。然而,它们都没有显示实际的消息。我还尝试过使用机器人帐户,结果令人惊讶地有效,但我希望它可以与我自己的帐户一起使用。问题是 Discord 不打算让私人客户阅读消息还是我错过了一些基本的东西?
小智 13
正如马特提到的,不支持用户机器人。但是,您的问题可能与意图有关。您可以尝试使用以下几行:
import discord
intents = discord.Intents.all()
client = discord.Client(intents=intents)
Run Code Online (Sandbox Code Playgroud)
也可以看看:
您可以通过MESSAGE CONTENT INTENT在 Discord 开发者面板中为您的机器人启用 来解决此问题。
import os
TOKEN = os.environ['TOKEN']
import discord
# This example requires the 'message_content' privileged intent to function.
class MyClient(discord.Client):
async def on_ready(self):
print(f'Logged in as {self.user} (ID: {self.user.id})')
print('------')
async def on_message(self, message):
# we do not want the bot to reply to itself
if message.author.id == self.user.id:
return
if message.content.startswith('!hello'):
await message.reply('Hello!', mention_author=True)
intents = discord.Intents.default()
intents.message_content = True
def main():
client = MyClient(intents=intents)
client.run(TOKEN)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
这是文档中回复的示例