Почему сообщение не определено в моей команде? - PullRequest
0 голосов
/ 02 июля 2018

Итак, я сделал команду справки с моим ботом-диссонатором, и это выглядит намного более аккуратно, когда я отправляю его как сообщение для встраивания. Тем не менее, это занимает много места, поэтому мне было интересно, смогу ли я отправить его как 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: name« message »не определено». Это сообщение об ошибке все еще появляется, даже если я заменяю деталь message.author на message.channel. Единственный способ получить сообщение для отправки - это заменить bot.send_message на await bot.say(embed=embed). Есть ли способ обойти это?

1 Ответ

0 голосов
/ 02 июля 2018

У вас нет прямой ссылки на 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)
...