Приложение Discord Bot Python 3.6 - PullRequest
0 голосов
/ 28 апреля 2020

В настоящее время я работаю над диско-ботом для сервера, и мне нужно реализовать команду приложения для персонала, такую ​​как !staff-application. Я пытаюсь сделать это в дмс, чтобы бот дмс вопрос, и пользователь отвечает на него. и так до конца, где оно сохранит приложение в канале на сервере. Как бы я это сделал?

1 Ответ

1 голос
/ 28 апреля 2020

Вы можете использовать функцию Client.wait_for () для ожидания сообщений.

Вот пример команды, которая зацикливает список вопросов (обратите внимание, что краткий сон взломан там и что, вероятно, стоит изучить использование правильного asyn c l oop).

q_list = [
    'What is your favorite color?',
    'Is the Sky Blue?',
    'Am I the best bot ever?'
]

a_list = []


@client.command(aliases=['staff-application'])
async def staff_application(ctx):
    a_list = []
    submit_channel = client.get_channel(<your channel id>)
    channel = await ctx.author.create_dm()

    def check(m):
        return m.content is not None and m.channel == channel

    for question in q_list:
        sleep(.5)
        await channel.send(question)
        msg = await client.wait_for('message', check=check)
        a_list.append(msg.content)

    submit_wait = True
    while submit_wait:
        await channel.send('End of questions - "submit" to finish')
        msg = await client.wait_for('message', check=check)
        if "submit" in msg.content.lower():
            submit_wait = False
            answers = "\n".join(f'{a}. {b}' for a, b in enumerate(a_list, 1))
            submit_msg = f'Application from {msg.author} \nThe answers are:\n{answers}'
            await submit_channel.send(submit_msg)

Результаты:

Dialog in DM

Submitted Answers in Channel

Использование Discord Py v1.3.3 от Pypi

...