K
K
KeySh1e2020-07-04 04:41:29
Python
KeySh1e, 2020-07-04 04:41:29

How to redirect messages from users to embed bot?

Hi, I want to learn how to redirect a user's message to a bot's message. Is there something similar to this?unknown.png?width=644&height=475unknown.png

Answer the question

In order to leave comments, you need to log in

2 answer(s)
M
Maxim Nevzorov, 2020-07-11
@SteweX

Two options:
1. As suggested by Alexander, use command parameters:

@bot.command()
async def report(ctx, user: discord.Membmer, *, reason: str):  # первый kwarg используется как "собирающий" аргумент
# https://discordpy.readthedocs.io/en/v1.3.4/ext/commands/commands.html#keyword-only-arguments
    ...

The command in this case will be called as follows: [p]report User#0000 Нарушение правила 42
2. Wait for a response:
To do this, you need to wait for the message event:
https://discordpy.readthedocs.io/en/v1.3.4/api.htm...
from asyncio import TimeoutError as AsyncTimeoutError

@bot.command()
async def report(ctx):
    ...
    try:
        member = await bot.wait_for("message", check=lambda m: m.author == ctx.author, timeout = 60)  # Базовая проверка - будет ловить сообщения от пользователя запустившего команду везде.
    except AsyncTimeoutError:
        await ctx.send("Вы уснули, я ушёл")
        return
     # На данный момент переменная "member" является лишь строкой, и не факт что это реальный пользователь
     # Используем конвертер для перевода из строки в пользователя
     # https://discordpy.readthedocs.io/en/v1.3.4/ext/commands/api.html#discord.ext.commands.MemberConverter
     try:
         member = commands.MemberConverter().convert(ctx, member)
     except commands.BadArgument:
         await ctx.send("Это не пользователь, кого вы пытаетесь ~~на...~~ обмануть")
         return
      # и тоже самое для причины

A
Alexander, 2020-07-04
@Alexandre888

use arguments -args[0]

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question