discord.py 中的打字机效果(我用谷歌翻译问这个问题,如有错误请见谅)

Posted

技术标签:

【中文标题】discord.py 中的打字机效果(我用谷歌翻译问这个问题,如有错误请见谅)【英文标题】:Typewriter effect in discord.py (i used google translate to ask this question, sry for any mistakes) 【发布时间】:2021-01-16 10:43:20 【问题描述】:
async def type(ctx):
words = "Hello"
for x in words:
    await ctx.send(x)
    time.sleep(0.1)

输出:

H
e
l
l
o

它们不会显示在一行中。 我必须怎么做才能解决这个问题?

【问题讨论】:

到底是什么问题? 它们不显示在一行中 在这种情况下什么是“打字机效应”? 程序从字符串中读取字符并在延迟后打印每个字符,使其看起来像打字效果。 【参考方案1】:

您正在为循环的每次迭代发送一条新消息,请改用Message.edit。此外,您需要在异步函数中使用asyncio.sleep 代替time.sleep

比如:

message = None
for i in range(len(words)):
    if not message:
        message = await ctx.send(words[:i+1])
        continue

    await message.edit(content=words[:i+1])
    await asyncio.sleep(0.1)

请注意,如果您对较长的消息执行此操作,discord 可能会限制您的速率。

【讨论】:

【参考方案2】:

这不能通过发送消息来实现,您需要对其进行编辑。

editing your message 的示例。您的代码所需的唯一修改是首先将“H”作为常规消息发送。然后编辑该消息,一次添加一个新字符。

【讨论】:

你怎么知道被问到了什么? 如果 OP 尝试在水平线上一次写入一个字符,是什么阻止他们编辑机器人的 Discord 消息并将新字符每次都添加到末尾? 我阅读了代码、问题和标签。他基本上是要求使机器人消息动画化。他可以通过一次一个字母修改他的消息来做到这一点 Here 是一个关于如何编辑已发送消息的主题。 现在应该不错了,如果问题没有解决,可能会添加一个例子。

以上是关于discord.py 中的打字机效果(我用谷歌翻译问这个问题,如有错误请见谅)的主要内容,如果未能解决你的问题,请参考以下文章

从事件获取文件时,打字稿对象可能为空

Discord.py 谷歌图片搜索

Discord.py-rewrite wait_for() 我该如何使用?

为啥我用谷歌账号登陆play商店他说与google服务器通信出现问题啊?

如何使用打字稿声明具有特定长度的字符串?

Discord.py 等级卡添加文字(枕头)