guild.members 中的 member.name 仅打印机器人名称,即使在代码中启用了意图

时间:2021-06-03 14:09:48

标签: discord discord.py

我正在关注有关如何制作不和谐机器人的 RealPython 教程,但遇到了我的代码仅打印机器人名称而不是我的名称的问题。我已经看到您在开发人员门户中启用特权网关意图并将 discord.Client(intents=intents) 代码添加到代码开头的解决方案,所以我做到了,但问题仍然存在。我没有收到任何错误或任何错误,只是打印了我的机器人名称。 如果我遗漏了什么,或者还有其他问题需要解决,请告诉我。谢谢!

这是我的代码:

# bot.py
import os
import discord
from dotenv import load_dotenv

intents = discord.Intents.all()
client = discord.Client(intents=intents)

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
GUILD = os.getenv('DISCORD_GUILD')

client = discord.Client()

@client.event
async def on_ready():
    for guild in client.guilds:
        if guild.name == GUILD:
            break
    print(
        f'{client.user} is connected to the following guild:\n'
        f'{guild.name}(id: {guild.id})'
    )

    members = '\n - '.join([member.name for member in guild.members])
    print(f'Guild Members:\n - {members}')

client.run(TOKEN)

1 个答案:

答案 0 :(得分:1)

您有两行将 discord.Client 分配给 client

client = discord.Client(intents=intents)
# and
client = discord.Client()

第一行与意图正确完成。但是,第二行创建了一个新的 discord.Client 对象,没有意图。删除这些行之一,并确保在您保留的行上启用意图。