Вывод сообщения в канал
Мне необходимо создать функцию которая отправляет сообщение в определённый канал. Уточняю, канал НЕ должен быть указан пользователем и не должен являться местом отправки сообщения. То есть, варианты с:
@client.command()
async def test(ctx, channel: discord.TextChannel):
await channel.send('Test')
и
@client.command()
async def test(ctx):
channel = discord.Message.channel
await channel.send('Test')
не предлогайте.
Ответы (3 шт):
Автор решения: LeonidM
→ Ссылка
# ID нужного канала
channel_id = 0
@bot.command()
async def test(ctx):
await (await ctx.guild.fetch_channel(channel_id)).send(ctx.message.content)
Автор решения: piece0f
→ Ссылка
Есть вот такой вот костыль, но прекрасно работает если не создавать новых каналов или не менять их месторасположение. P.S. Отсчет расположения начинается с 0
guild = ctx.guild #наш сервер
category = guild.categories[4] #позиция категории
channel = category.channels[0] #позиция канала в категории
await channel.send(...)
Автор решения: Роман Сиджах
→ Ссылка
Могу дать более простой и понятный код.
С сообщением указанным в аргументе
@bot.command()
async def send(ctx, *, text):
channel = bot.get_channel(#айди канала)
await channel.send(text)
С фиксированным сообщением:
@bot.command()
async def send(ctx):
channel = bot.get_channel(#айди канала)
await channel.send(#ваше сообщение)