python - 如何将下一行作为不和谐机器人的输入
问题描述
我正在制作一个不和谐的机器人,在用户键入某个命令后,我希望用户的下一行成为变量的输入。
所以:
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)
我唯一能找到的是,如果消息包含特定内容,那么当机器人执行某些操作时,但在这种情况下,无论如何我只想将整个消息作为输入。
解决方案
我不确定这是否是您要查找的内容,但简要查看discord.py 文档,它提供了如何等待用户回复的示例。
@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)
推荐阅读
- python - 我如何在每个附加的瓷砖上附加矩形
- r - 使用循环 R 合并数据集
- android - 嵌套 RecyclerView 的 notifyDataSetChanged() 不起作用
- sqlite - 在 Github 操作上的内存数据库上运行 PDO SQLite 查询
- angular - AngularFire - Firebase Auth 显示错误
- c++ - 有没有办法根据模板变量调用成员对象的不同函数
- java - 否则无法将三元条件 Java 运算符转换为普通运算符
- php - 如何在不使用注释的情况下为自定义 DTO 操作配置标识符?
- pagespeed - PageSpeed Insights 超时
- python - 为 django 添加下拉列表