Discord Bot Client.User 在 Python 中转换为 Discord.Utils 时出错
Discord Bot Client.User Error Converting to Discord.Utils in Python
python 3.7.3
discord.py 1.3.4
raspberry pi 4
一切正常后,我一开始就卡住了。
我从头开始。当我使用 for 循环后跟我的 print(f'{client.user}
时,我没有遇到任何问题,机器人用户名打印到终端。当我放弃循环并使用 guild = discord.utils.get(client.guilds, name=GUILD)
代码时,我在终端中收到以下错误。
Ignoring exception in on_ready
Traceback (most recent call last):
File "/home/pi/.local/lib/python3.7/site-packages/discord/client.py", line 312, in _run_event
await coro(*args, **kwargs)
File "/home/pi/TackleBot/bot2.py", line 27, in on_ready
f'{client.user} is connected to the following guild:\n'
AttributeError: 'NoneType' object has no attribute 'name'
如果我在guild = discord.utils.get
命令后直接添加print(client.user)
命令,它会在那里打印用户名,但仍然会出现下面的错误。我花了几个小时梳理文档,这就是我现在所处的位置。仍然很困惑。如果我注释掉 for 循环,我会得到错误。如果我注释掉 discord 实用程序命令,它就可以正常工作。永远不要用 print(f'{client.user}
块改变任何东西。
我边学边学,非常感谢任何帮助或建议。谢谢!
import os
import discord
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
GUILD = os.getenv('DISCORD_GUILD')
client = discord.Client()
@client.event
async def on_ready():
guild = discord.utils.get(client.guilds, name=GUILD)
if guild is not None:
channel = discord.utils.get(guild.text_channels, name=GUILD)
# when the lines 18-20 are used, line 26 throws an object type error 'none'
# when lines 23-25 are used, there is no error
# 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.name}:\n - {members}')
client.run(TOKEN)
如果我没理解错的话,你是想先在on_ready函数中打印公会信息,对吧?
你可以这样做:
client = discord.Client()
@client.event
async def on_ready():
for guild in client.guilds:
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)
python 3.7.3 discord.py 1.3.4 raspberry pi 4
一切正常后,我一开始就卡住了。
我从头开始。当我使用 for 循环后跟我的 print(f'{client.user}
时,我没有遇到任何问题,机器人用户名打印到终端。当我放弃循环并使用 guild = discord.utils.get(client.guilds, name=GUILD)
代码时,我在终端中收到以下错误。
Ignoring exception in on_ready Traceback (most recent call last): File "/home/pi/.local/lib/python3.7/site-packages/discord/client.py", line 312, in _run_event await coro(*args, **kwargs) File "/home/pi/TackleBot/bot2.py", line 27, in on_ready f'{client.user} is connected to the following guild:\n' AttributeError: 'NoneType' object has no attribute 'name'
如果我在guild = discord.utils.get
命令后直接添加print(client.user)
命令,它会在那里打印用户名,但仍然会出现下面的错误。我花了几个小时梳理文档,这就是我现在所处的位置。仍然很困惑。如果我注释掉 for 循环,我会得到错误。如果我注释掉 discord 实用程序命令,它就可以正常工作。永远不要用 print(f'{client.user}
块改变任何东西。
我边学边学,非常感谢任何帮助或建议。谢谢!
import os
import discord
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
GUILD = os.getenv('DISCORD_GUILD')
client = discord.Client()
@client.event
async def on_ready():
guild = discord.utils.get(client.guilds, name=GUILD)
if guild is not None:
channel = discord.utils.get(guild.text_channels, name=GUILD)
# when the lines 18-20 are used, line 26 throws an object type error 'none'
# when lines 23-25 are used, there is no error
# 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.name}:\n - {members}')
client.run(TOKEN)
如果我没理解错的话,你是想先在on_ready函数中打印公会信息,对吧?
你可以这样做:
client = discord.Client()
@client.event
async def on_ready():
for guild in client.guilds:
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)