我正在制作一个不和谐的机器人,在用户输入某个命令后,我希望用户的下一行是变量的输入。
所以:
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)
我唯一能找到的是,如果消息包含特定内容,机器人会在何时执行某些操作,但在这种情况下,无论如何我只想将整个消息作为输入。
答案 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)