Discord Py将消息发送到特定频道

时间:2020-06-11 15:10:49

标签: python discord.py

我正在使用不和谐的机器人。 我正在下命令将消息发送到特定房间,但我无法做到……这是我的代码:

@client.command(name='say', help='Dire un message à votre place')
@commands.has_permissions(send_messages=True, manage_messages=True)
async def say(ctx, message, channelid):
    await client.wait_until_ready()
    channel = client.get_channel(channelid)
    embed = discord.Embed(title="Message", color=discord.Color.dark_red())
    embed.add_field(name="Nouveau message de {}".format(ctx.message.author), value="{}".format(message))
    embed.set_footer(text="{}".format(ctx.message.author))
    await channel.send(embed=embed)

这是我在终端中遇到的错误。

Command raised an exception: AttributeError: 'NoneType' object has no attribute 'send"

预先感谢您的回复。

PS:我的机器人是法语

2 个答案:

答案 0 :(得分:0)

这是可以帮助您入门的代码的一部分!我最近做了这个:

@client.event
async def on_member_join(member):
    channel = discord.utils.get(member.guild.channels, name="?│arrivals")
    await channel.send(f"Welcome to Sleep's Gaming Cult {member.mention}! You are the ### member")

您可以将name更改为id,然后输入频道ID而不是“?│到达”!我尚未对此进行测试,但这是我的最佳猜测,它将起作用!当然,这是有人加入时的示例,但是您可以将其用于任何命令!

答案 1 :(得分:0)

您可以执行以下操作,以一条字符串而不是一个单词的形式发送消息:

@client.command(name='say', help='Dire un message à votre place')
@commands.has_permissions(send_messages=True, manage_messages=True)
async def say(ctx, channel:discord.TextChannel, message):
    #Embed making
    embed = discord.Embed(title="Message", color=discord.Color.dark_red())
    embed.add_field(name="Nouveau message de {}".format(ctx.message.author), value="{}".format(message))
    embed.set_footer(text="{}".format(ctx.message.author))

    await channel.send(embed=e)

冒号和不和谐。频道表示您需要在不和谐屏幕上输入#channel格式 另外,要获得多封信,请执行以下操作:

async def say(ctx, channel:discord.TextChannel, *msg):
    message = " ".join(msg)
    #Embed making
    embed = discord.Embed(title="Message", color=discord.Color.dark_red())
    embed.add_field(name="Nouveau message de {}".format(ctx.message.author), value="{}".format(message))
    embed.set_footer(text="{}".format(ctx.message.author))

    await channel.send(embed=e)

星号使它成为一个元组,所以如果这样做

c?say #text-channel-send Hello and Bye

您好,再见是元组的一部分,就像这样:('Hello','and','bye'),所以当您这样做

" ".join(msg)

它将元组的元素连接起来,为您提供一个由空格分隔的字符串。它也适用于列表。 希望对您有帮助