Невозможно отправить вставки на определенные каналы Discord - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь отправить встроенное сообщение на указанный канал описанным ниже способом. Однако встроенное сообщение не отправляется, когда я вставляю его отдельно или с чем-либо еще. Однако отправка строк работала нормально.

@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)

Есть ли альтернативный способ отправить сообщение на указанный канал? Или есть решение для метода, который я использую сейчас? (Как упомянуть роль тоже было бы неплохо, ха-ха)

1 Ответ

0 голосов
/ 09 июля 2020

Вы можете указать роль, используя role.mention, как только получите объект Role. Вы можете получить роль, используя get from discord.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

. Отвечая на заголовок, вы можете проверить, включен ли канал, на который вы отправляете встраивание, или нет.

...