AttributeError: 'str' object has no attribute 'get' -- Discord.py
AttributeError: 'str' object has no attribute 'get' -- Discord.py
我正在尝试将自定义表情符号设置为我的机器人状态。但是,我收到此错误。
AttributeError: 'str' object has no attribute 'get'
我该如何解决这个问题?
import discord
from discord.ext import commands
intents = discord.Intents.default()
intents.members = True
Bot = commands.Bot(command_prefix="&", intents=intents)
@Bot.event
async def on_ready():
await Bot.change_presence(activity=discord.Activity(type=4, emoji="", name="hello")) # The error is related to this line
print("ready!")
Bot.run(TOKEN)
Ignoring exception in on_ready
Traceback (most recent call last):
File "E:\projects\Virtual Environment\discord-bot\lib\site-packages\discord\client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "E:\projects\discord-bot\base.py", line 114, in on_ready
await Bot.change_presence(activity=discord.Activity(type=4, emoji="", name="hello"))
File "E:\projects\Virtual Environment\discord-bot\lib\site-packages\discord\activity.py", line 193, in __init__
self.emoji = PartialEmoji.from_dict(emoji)
File "E:\projects\Virtual Environment\discord-bot\lib\site-packages\discord\partial_emoji.py", line 83, in from_dict
animated=data.get('animated', False),
AttributeError: 'str' object has no attribute 'get'
您的问题中有几点需要注意。
首先是机器人账户不允许设置自定义活动(Activity在你的情况下类型4),这是[=32的限制=]DiscordAPI本身,这个没什么关系,建议你看看其他类型的活动。
其次,在尝试构建 CustomActivity
对象时,您将表情符号字符串作为参数传递,其中 documentation 要求 PartialEmoji
对象,您应该首先检索 PartialEmoji
对象并将其作为有关文档的参数传递,但请继续阅读以下要点。
第三个也是最后一个,在创建CustomActivity
对象时,在discord.py中有一个已知的issue。问题源于文档中的一个错误,正如我提到的,它告诉您将 PartialEmoji
作为参数传递,但这只适用于最新版本的 discord.py(如果您查看github 昨天更新的问题)。问题是代码不期望 PartialEmoji
,它实际上期望 dict
对象中有 PartialEmoji
(因此它寻找 get()
函数的原因).我建议你使用最后一种传递表情符号参数的方法。
您可以通过查看 discord.py
的 source code 来检查这一点
我正在尝试将自定义表情符号设置为我的机器人状态。但是,我收到此错误。
AttributeError: 'str' object has no attribute 'get'
我该如何解决这个问题?
import discord
from discord.ext import commands
intents = discord.Intents.default()
intents.members = True
Bot = commands.Bot(command_prefix="&", intents=intents)
@Bot.event
async def on_ready():
await Bot.change_presence(activity=discord.Activity(type=4, emoji="", name="hello")) # The error is related to this line
print("ready!")
Bot.run(TOKEN)
Ignoring exception in on_ready
Traceback (most recent call last):
File "E:\projects\Virtual Environment\discord-bot\lib\site-packages\discord\client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "E:\projects\discord-bot\base.py", line 114, in on_ready
await Bot.change_presence(activity=discord.Activity(type=4, emoji="", name="hello"))
File "E:\projects\Virtual Environment\discord-bot\lib\site-packages\discord\activity.py", line 193, in __init__
self.emoji = PartialEmoji.from_dict(emoji)
File "E:\projects\Virtual Environment\discord-bot\lib\site-packages\discord\partial_emoji.py", line 83, in from_dict
animated=data.get('animated', False),
AttributeError: 'str' object has no attribute 'get'
您的问题中有几点需要注意。
首先是机器人账户不允许设置自定义活动(Activity在你的情况下类型4),这是[=32的限制=]DiscordAPI本身,这个没什么关系,建议你看看其他类型的活动。
其次,在尝试构建 CustomActivity
对象时,您将表情符号字符串作为参数传递,其中 documentation 要求 PartialEmoji
对象,您应该首先检索 PartialEmoji
对象并将其作为有关文档的参数传递,但请继续阅读以下要点。
第三个也是最后一个,在创建CustomActivity
对象时,在discord.py中有一个已知的issue。问题源于文档中的一个错误,正如我提到的,它告诉您将 PartialEmoji
作为参数传递,但这只适用于最新版本的 discord.py(如果您查看github 昨天更新的问题)。问题是代码不期望 PartialEmoji
,它实际上期望 dict
对象中有 PartialEmoji
(因此它寻找 get()
函数的原因).我建议你使用最后一种传递表情符号参数的方法。
您可以通过查看 discord.py
的 source code 来检查这一点