如何使机器人显示“正在输入...”状态?

时间:2018-07-09 19:24:48

标签: python python-3.x discord discord.py

所以,如果我有一个很长的命令,像这样:

const fs = require('fs')
const forge = require('node-forge')
const { pki } = forge
const { promisify } = require('es6-promisify')
const readFile = promisify(fs.readFile)

async function main() {
  const certPem = await readFile('./cert.crt', 'utf-8')
  const cert = pki.certificateFromPem(certPem)
  const fingerprint = pki.getPublicKeyFingerprint(cert.publicKey, {
    md: forge.md.sha256.create(),
    encoding: 'hex',
  })
}

main()

很遗憾,在文档中或此处找不到任何内容。

3 个答案:

答案 0 :(得分:2)

如果您使用重写分支,那么所有Messageable都有一个typing上下文管理器,可以无限期地键入内容,还有一个trigger_typing协程,可以显示一些键入信息秒。

@bot.command()
async def longCommand(ctx):
   async with ctx.typing():
        await sleep(10)
   await ctx.send("Done!")

答案 1 :(得分:1)

@bot.command(pass_context=True)
async def longCommand(ctx):
   await bot.send_typing(ctx.channel)
   await asyncio.sleep(10)
   await bot.say("Done!")

请记住在对协程的每个异步调用中使用await

答案 2 :(得分:0)

@bot.command()
async def type(ctx):
    await ctx.channel.trigger_typing()
    await asyncio.sleep(5)
    await ctx.send("Done!")

这对我有用! 我使用的是 Discord.py(不是重写)