Discord bot将嵌入消息发送到另一个频道

时间:2018-06-14 18:42:35

标签: python discord discord.py

我无法弄清楚如何将机器人的嵌入式消息从一个频道发送到另一个频道,尽管我可以弄清楚如何将自己的消息发送给另一个:

@bot.command(pass_context=True)
async def tf1(ctx):
    embed=discord.Embed(title="Test", description="1", color=0x5bcdee)
    embed.set_footer(text="Test2")
    await bot.say(discord.Object(id='456277299189383168'),  embed=embed)

似乎不起作用,每当我发送它时,我都会收到<discord.object.Object object at 0x03B66BD0>,然后是嵌入的消息。

另一方面,当我尝试复制邮件而不是嵌入邮件时,此有效,这是复制邮件的代码:

@bot.command(pass_context=True)
async def obisowner(ctx, *, mesg):
    await bot.send_message(discord.Object(id='456277299189383168'), "{}".format(mesg))

2 个答案:

答案 0 :(得分:2)

bot.say()获取第一个位置参数message,并发送消息并嵌入命令上下文的通道(即机器人接收命令消息的通道)。 / p>

由于您要将信息发送到其他频道,请改用bot.send_message()

await bot.send_message(discord.Object(id='456277299189383168'),  embed=embed)

答案 1 :(得分:1)

你必须使用discord.py重写库

首先,您需要创建命令:

@bot.command()
async def embed(ctx):

之后,您需要设置消息将发送到哪个频道:

channel = bot.get_channel(channel id)

现在,您需要创建嵌入:

embed = discord.Embed(title="Embed test", description="A test for my discord bot", color=0x5bcdee)
embed.add_field(name="Hello!", value="Hello World!", inline=False)

最后,发送消息!

await channel.send(embed=embed)

完整的命令代码:

@bot.command()
async def embed(ctx):
    channel = bot.get_channel(channel id)
    embed = discord.Embed(title="Embed test", description="A test for my discord bot", color=0x5bcdee)
    embed.add_field(name="Hello!", value="Hello World!", inline=False)
    await channel.send(embed=embed)