如何将下一行作为discord bot的输入

时间:2021-02-14 00:24:45

标签: python discord

我正在制作一个不和谐的机器人,在用户输入某个命令后,我希望用户的下一行是变量的输入。

所以:

import discord
@client.event

async def on_ready():
print('{0.user}'.format(client)+'logged in')
@client.event
async def on_message(message):

if message.author == client.user:
   return
if message.content.startswith('Lets play hangman'):
    message.channel.send('Please Guess a letter')
    userGuess = ### and here put whatever the user writes next (so no matter what is contained inside)

我唯一能找到的是,如果消息包含特定内容,机器人会在何时执行某些操作,但在这种情况下,无论如何我只想将整个消息作为输入。

1 个答案:

答案 0 :(得分:0)

我不确定这是否是您要查找的内容,但简要查看 discord.py documentation 它提供了如何等待用户回复的示例。

@client.event
async def on_message(message):
    if message.content.startswith('$greet'):
        channel = message.channel
        await channel.send('Say hello!')

        def check(m):
            return m.content == 'hello' and m.channel == channel

        msg = await client.wait_for('message', check=check)
        await channel.send('Hello {.author}!'.format(msg))

基本上,如果命令以 $greet 开头,则机器人会发回 Say hello!。然后,它会等到用户回复。

我建议采用与用户回复的消息相等的变量 msg 值并将其设置为 userGuess

所以:

userGuess = await client.wait_for('message') 就是答案。

但这就是整个消息对象,只获取消息本身,然后在其后附加 .content

函数代码:

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content.startswith('Lets play hangman'):
        await message.channel.send('Please Guess a letter')
        userGuess =  await client.wait_for('message')
        //prints the message content into console
        print(userGuess.content)