【问题标题】:Can't send embeds to certain discord channels无法将嵌入发送到某些不和谐频道
【发布时间】:2020-07-09 23:05:07
【问题描述】:

我正在尝试通过以下方法将嵌入消息发送到指定频道。但是,当我将其单独或与其他任何东西一起放入时,嵌入消息不会发送。但是,发送字符串工作正常。

@bot.command()
@commands.cooldown(1, 10, commands.BucketType.user)
async def report(ctx, user, reason):
    if ctx.channel.id == 730496513255669881:
            channel = bot.get_channel(730432681657237594)
            embedstaff = discord.Embed(title="A new player report has been submitted!", color=0xff6a00)
            embedstaff.add_field(name="Player/User Reported", value=ctx.author.name, inline=True)
            embedstaff.add_field(name="Reporter", value="Lol", inline=True)
            embedstaff.add_field(name="Report Reason: " + reason, value="", inline=False)
            await channel.send("Heyy x3", embed = embedstaff)

是否有其他方法可以将消息发送到指定频道?或者我现在使用的方法有解决方案吗? (怎么提个角色也不错哈哈)

【问题讨论】:

    标签: python python-3.x discord discord.py


    【解决方案1】:

    获得Role 对象后,您可以使用role.mention 提及角色。您可以使用getdiscord.utils 获取角色

    from discord.utils import get
    #inside a command
    role = get(ctx.guild.roles, name='role')
    await ctx.send(f'Hello {role.mention}')
    

    通过 Id 获取频道并将嵌入发送到该频道是标准方法。也就是说Guild 具有system_channel, afk_channel, rules_channel 等属性。因此,如果设置了其中任何一个,您只需从 ctx 获取它们

    rules = ctx.guild.rules_channel
    

    回答标题,您可以检查您发送嵌入的频道是否启用了嵌入。

    【讨论】:

    • 使用ctx.guild.rules_channel 对象是什么意思?这是否只指定了一个名为“rules-channel”的频道?对于启用了嵌入链接的频道,您是指机器人的权限还是其他?
    • 如果您在服务器设置中设置了系统通道,您可以从ctx.guild 获取通道我之前没有使用过rules_channnel,并且是机器人的权限。
    猜你喜欢
    • 2022-08-19
    • 2021-09-18
    • 2021-11-05
    • 1970-01-01
    • 2020-05-07
    • 2021-07-15
    • 1970-01-01
    • 2019-04-11
    • 2020-07-29
    相关资源
    最近更新 更多