@132eee

Как заставить бота написать на определённом канале?

Я хочу создать систему репортов для discord бота. Хочу чтобы он писал на каналах с названием "report".
Пока вот вся команда:
@bot.command(pass_context=True)
async def репорт(ctx, arg, *, arg2):
    embed=discord.Embed(title="Report")
    embed.add_field(name="Пользователь:", value= arg , inline=True)
    embed.add_field(name="Причина:", value= arg2 , inline=True)
    await ctx.send(embed=embed)
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
retUrn3d
@retUrn3d
Пользователь, просто пользователь...
Для этого достаточно получить сам канал, чтобы в него что-то отправить.
Это легко сделать с помощью: bot.get_channel(id_here)
Но у вас стоит задача, отправлять сообщение в канал, который называется: "report".
Для этого мы должны перебрать все каналы на нашем сервере и найти с нужным нам названием.
for channel in ctx.guild.channels:
        if channel.name == "report":
            #Объект канала, который мы будем использовать для отправки сообщения.
            channel = bot.get_channel(channel.id)

И в итоге, ваш код должен выглядеть следующим образом.
@bot.command(pass_context=True)
async def report(ctx, *, arg):
    emb = discord.Embed(title="REPORT", description=f"От пользователя {ctx.author.mention}", colour=discord.Color.red())
    emb.add_field(name="Причина:", value=arg, inline=True)
    # Получаем все каналы в нашей гильдии.
    for channel in ctx.guild.channels:
        if channel.name == "report":
            # Объект канала, который мы будем использовать для отправки сообщения.
            channel = bot.get_channel(channel.id)
            # Отправляем сообщение в нужный нам канал.
            await channel.send(embed=emb)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
17 янв. 2021, в 08:35
50000 руб./за проект
17 янв. 2021, в 01:26
100000 руб./за проект
16 янв. 2021, в 22:34
10000 руб./за проект