Как отправить сообщение, полученное ботом через команду, в другой канал с помощью Pycord?

Как настроить отправку сообщения, написанного пользователем боту при выполнении команды, в отдельный канал или для отправки разработчику бота в личные сообщения? <br/> <br/> <pre><code class="python">@bot.slash_command(description="Обратиться к разработчику.")
@discord.option("name", description="Введите своё имя.")
async def feedback(ctx: discord.ApplicationContext, name: str):
    try:
        await ctx.respond(f"Здравствуй, {name}! Введите своё обращение в течение 30 секунд.")

        def is_author(m: discord.Message):
            return m.author.id == ctx.author.id

        feedback_message = await bot.wait_for("message", check=is_author, timeout=30.0) 
        await ctx.send(f"Спасибо за ваше обращение!\nВаше обращение: `{feedback_message.content}`") # Указать, чтобы сообщение отправлялось в отдельный канал или личные сообщения
        
    except asyncio.TimeoutError:
        await ctx.send("Ваше время вышло, попробуйте еще раз!")</code></pre> <br/> <br/> Я добавил комментарий по поводу необходимости указания места передачи сообщения(nto an open new channel or send a private message to the developer).
  • 12 апреля 2024 г. 16:00
Ответы на вопрос 3
Для отправки сообщения в другой канал или в личные сообщения разработчику, вам нужно указать объект канала или пользователя, куда вы хотите отправить сообщение. 

Вот пример кода, дополнив который вы сможете отправить сообщение в отдельный канал:

```python
@bot.slash_command(description="Обратиться к разработчику.")
@discord.option("name", description="Введите своё имя.")
async def feedback(ctx: discord.ApplicationContext, name: str):
    try:
        await ctx.respond(f"Здравствуй, {name}! Введите своё обращение в течение 30 секунд.")

        def is_author(m: discord.Message):
            return m.author.id == ctx.author.id

        feedback_message = await bot.wait_for("message", check=is_author, timeout=30.0) 
        
        # Отправка сообщения в другой канал
        channel = bot.get_channel(CHANNEL_ID)  # ID канала, куда вы хотите отправить сообщение
        await channel.send(f"Пользователь {ctx.author} отправил обращение: `{feedback_message.content}`")

        await ctx.send("Ваше обращение было отправлено успешно!")

    except asyncio.TimeoutError:
        await ctx.send("Ваше время вышло, попробуйте еще раз!")
```

Если вы хотите отправить сообщение в личные сообщения разработчику, замените строку `channel.send` на `await ctx.author.send`. Вместо CHANNEL_ID укажите ID пользователя разработчика бота.

Надеюсь, это поможет вам отправлять сообщения в нужные каналы или пользователям!
Достаете канал по id через get_channel , отправляете через сhannel.send 

channel_id = ... # достаете из БД или оттуда где у вас хранится id нужного канала
channel = bot.get_channel(channel_id)
channel.send(feedback_message.content)
'NoneType' object has no attribute 'send'
Похожие вопросы