开发者社区> 问答> 正文

AttributeError:'str'对象在我的Discord命令中没有属性'send'

如果有人能解释我在哪里出错了,那将是非常有帮助的,下面我提供了错误和代码。谢谢:)如果有人可以指导我解决问题,或者清楚地指出我出了错的地方,那将是很好的选择,我无法为我的生活弄清楚它的缺失之处以及为什么嵌入物缺失了值?

Ignoring exception in command ip:
Traceback (most recent call last):
  File "C:\Users\\*ame\*AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 83, in wrapped
    ret = await coro(\*rgs, \*kwargs)
  File "C:\Users\\*ame\*Desktop\Sanitary SB\Sanitary.py", line 85, in ip
    ctx.send(embed=em)
AttributeError: 'str' object has no attribute 'send'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\\*ame\*AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\bot.py", line 892, in invoke
    await ctx.command.invoke(ctx)
  File "C:\Users\\*ame\*AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 797, in invoke
    await injected(\*tx.args, \*ctx.kwargs)
  File "C:\Users\\*ame\*AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 92, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'str' object has no attribute 'send'



@Sanitary.command()
async def ip(self, ctx, \* ipaddr: str = "1.3.3.7"):
        r = requests.get(f'http://extreme-ip-lookup.com/json/{ipaddr}')
        em = discord.Embed(color=0x00000)
        geo = r.json()
        fields = [
            {'name': 'IP', 'value': geo['query']},
            {'name': 'ipType', 'value': geo['ipType']},
            {'name': 'Country', 'value': geo['country']},
            {'name': 'City', 'value': geo['city']},
            {'name': 'Continent', 'value': geo['continent']},
            {'name': 'Country', 'value': geo['country']},
            {'name': 'IPName', 'value': geo['ipName']},
            {'name': 'ISP', 'value': geo['isp']},
            {'name': 'Latitute', 'value': geo['lat']},
            {'name': 'Longitude', 'value': geo['lon']},
            {'name': 'Org', 'value': geo['org']},
            {'name': 'Region', 'value': geo['region']},
            {'name': 'Status', 'value': geo['status']},
        ]
        for field in fields:
            if field['value']:
                em.add_field(name=field['name'], value=field['value'], inline=True)
        return await ctx.send(embed=em)
     \`  \`  \` 

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 08:57:45 671 0
1 条回答
写回答
取消 提交回答
  • 从命令函数参数中删除self,这不在一个类中,所以ctx实际上是给定的字符串,此外,由于discord.py中的函数完全不同并且已被分配,因此您应该删除*。按命令中的空格顺序(如果使用的是discord.ext.commands的话。)

    回答来源:stackoverflow

    2020-03-24 08:57:51
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载