如何解决AttributeError:“ str”对象没有属性“ content”
我能够将自己的Discord机器人代码与编写代码以通过用户输入将数据写入Google表格的人进行合并。但是,当我尝试向其引入经济体系时,却不断出错。应该发生的是,当有人输入此命令时:
!bet result[0],result[1],result[2]
我将采用result [2]的值,并将其减去其货币(以我的情况为令牌)。我是这样写的:
@client.command()
async def bet(ctx,message):
await open_account(ctx.author)
users = await token_data()
user = ctx.author
if message.content.startswith('!b '):
msg = message.content[3:]
result = [x.strip() for x in msg.split(',')]
SPREADSHEET_ID = 'Sheet ID here'
RANGE_NAME = result[0]+'!A2'
FIELDS = 3
token_bet = int(result[2])
if len(result) == FIELDS:
print(message.created_at)
DATA = [ctx.author.name] + [str(ctx.author.id)] + [str(message.created_at)] + result
sheet.add(SPREADSHEET_ID,RANGE_NAME,DATA)
await message.channel.send('Thank you! Your bet has been placed :)')
else:
await message.channel.send('Error: Please try again!'.format(FIELDS,FIELDS-1))
users[str(user.id)]["token"] -= token_bet
问题是每当我尝试执行命令时,都会出现此错误:
AttributeError: 'str' object has no attribute 'content'
关于为什么的任何想法?任何帮助将不胜感激。
解决方法
显然,没有为message
定义任何类。
如果我假设您的变量是字符串输入的一部分,则需要将此字符串声明为(已给定或自己编写的)类对象的实例,该类对象继承属性content
。
不幸的是,鉴于这段代码,无法给您进一步的建议!
,我认为您是从使用on_message
的地方复制了代码,并将其放入命令中。在on_message
中,message
是一个Message对象,因此要获取内容,您必须使用message.content
,但是在命令中,您只会获取原始字符串。我建议将命令def修改为:
async def bet(ctx,*,message):
这将确保整个消息内容都传递给您的命令。然后,仅用message.content
message
的实例
编辑:
另外,如果您有类似message.channel.send
之类的内容,则需要将其更改为ctx.send
,以便向上下文发送消息
如果您还有其他问题,我建议您看看Commands documentation
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。