为什么不是我的命令定义的消息?(Why is message not defined in my C

2019-11-04 22:38发布

所以,我已经做了帮助命令我的不和谐机器人,它看起来更整齐,当我将它作为嵌入信息。 但是,它不会占用很大的空间,所以我在想,如果我可以把它作为DM的message.author 。 这是我到目前为止有:

import discord
from discord.ext.commands import Bot
from discord.ext import commands

Client = discord.Client()
bot_prefix = "."
bot = commands.Bot(command_prefix=bot_prefix)

@bot.event
async def on_ready():
    print("Bot Online!")
    print("Name: {}".format(bot.user.name))
    print("ID: {}".format(bot.user.id))

bot.remove_command("help")

# .help
@bot.command(pass_context=True)
async def help(ctx):
embed=discord.Embed(title="Commands", description="Here are the commands:", color=0xFFFF00)
embed.add_field(name="Command1", value="What it does", inline= True)
embed.add_field(name="Command2", value="What it does", inline= True)
await bot.send_message(message.author, embed=embed)

bot.run("TOKEN")

运行命令后,但是你得到的错误“NameError:名字‘消息’没有定义” 此错误消息仍然显示,即使我更换message.author与部分message.channel 。 我可以在所有发送消息的唯一方法是,当我更换bot.send_messageawait bot.say(embed=embed) 。 有没有解决的办法?

Answer 1:

您没有直接的参考message 。 你必须从一开始就Context你传递对象。

@bot.command(pass_context=True)
async def help(ctx):
    embed=discord.Embed(title="Commands", description="Here are the commands:", color=0xFFFF00)
    embed.add_field(name="Command1", value="What it does", inline= True)
    embed.add_field(name="Command2", value="What it does", inline= True)
    await bot.send_message(ctx.message.author, embed=embed)


文章来源: Why is message not defined in my Command?