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-rewrite wait_for() 我该如何使用?