首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >你如何让骑自行车的表情符号嵌入到一个不和谐的机器人中?

你如何让骑自行车的表情符号嵌入到一个不和谐的机器人中?
EN

Stack Overflow用户
提问于 2019-12-03 17:30:26
回答 1查看 771关注 0票数 1

我正试图在我的服务器上复制一些来自一些不和谐机器人的游戏,其中之一就是老虎机。

借鉴node.js。

我已经创建了它的克隆,但我遗漏了一个元素->表情符号循环。

基本上,在相同的嵌入消息中,机器人让每个图标循环;就像真正的老虎机一样,然后停在一个图标上,然后移动到下一个图标,并做同样的事情。我的bot一次处理所有这些内容,所以如果您键入+插槽1000,它将发送回一个消息,其中包含已经选择的插槽。

我如何让我的机器人在表情符号中循环,然后移动到下一个表情符号,并在显示所有信息之前执行相同的操作?

我是不是遗漏了什么“等待秒”的功能?

我假设动画图标只是一个自定义的表情符号,通过每个选项,但我仍然不确定如何真正去:

动画表情符号-> 0.5s之后选择一个-> 0.5s之后动画秒-> 0.5s之后选择一个,等等。

干杯!

EN

回答 1

Stack Overflow用户

发布于 2020-07-14 03:49:08

所以我对这个机器人也有同样的疑问。我对这里没有任何答案感到失望,但我最终找到了答案。最初,我只是尝试每秒更新表情符号几次,让它看起来像是在骑车。然而,这种方法不起作用,因为有5个“事情”的速率限制(你只能在1秒内编辑5个消息(或5个事情))。

他们实际上在做什么(就像你暗示的那样)是使用一个自定义的动画表情符号。如果你想使用他们的表情符号,你可以在here上找到它。然后你需要下载这个gif并将其导入到你的机器人的discord服务器中。您可以更改表情符号的标记,即:name:,用于在服务器中调用它。我把我的命名为:cycle_test:。如果然后输入以下文本到聊天机器人或在服务器频道上,它将给你自定义表情的唯一标识符:\:cycle_test:。只需右键单击您的消息并单击"quote“,它将为您提供这个唯一的标识符,对我来说是这样的:<a:cycle_test:732311116742393856>

现在你已经有了你的动画表情的标识符,你可以在不一致的嵌入中使用它。我使用的是Python,但语法应该非常类似:

代码语言:javascript
运行
复制
embed.add_field(name="Slot results", value="<a:cycle_test:732311116742393856>")

。然后,您需要添加代码以等待一两秒钟,并且当您遍历所有的槽结果时,您将一次停止一列。只有当您想要显示某列的结果时,才会进行编辑,如果您在每个结果之间给它大约一秒钟的时间,它就不会达到限制。

下面是我使用的代码(同样,它是用Python编写的,但逻辑应该可以帮助您弄清楚它)

代码语言:javascript
运行
复制
slot_embed = discord.Embed(title="**Slot Machine**")
slot_embed.add_field(name="Results",value=f"<a:cycle_test:732311116742393856> <a:cycle_test:732311116742393856> <a:cycle_test:732311116742393856>")
sent_embed = await ctx.send(embed=slot_embed)
current_slot_pics = ["<a:cycle_test:732311116742393856>","<a:cycle_test:732311116742393856>","<a:cycle_test:732311116742393856>"]
for i in range(0,len(slot_results_pic)):
    await asyncio.sleep(1.5)
    current_slot_pics[i] = slot_results_pic[i]
    new_slot_embed = None
    new_slot_embed = discord.Embed(title="**Slot Machine**")
    slot_results_str = ""        
    for thisSlot in current_slot_pics:
        slot_results_str += f"{thisSlot} "
    new_slot_embed.add_field(name="Results",value=f"{slot_results_str}")
    await sent_embed.edit(embed=new_slot_embed)

在浏览代码时,我要做的是首先设置一个嵌入来发送带有动画表情符号“cycle_test”的代码。我将embed发送出去,并为我的slot_results_pic变量的大小启动一个for循环,该变量是我在前面设置的一个变量,用于确定他们选择了哪些插槽。(请注意,插槽的结果在向用户显示之前很久就已经知道了,所有这些代码都只是为了让它看起来更酷而设的花招)。我有一个名为"current_slot_pics“的数组,其中包含当前显示给用户的数据。注意它们都是如何设置为开头的动画表情符号的。

接下来,我运行一个睡眠命令,让它在显示结果之前循环1.5秒。现在我将"current_slot_pics“数组的第一个元素设置为程序先前计算的第一个结果,即第一个插槽。在此之后,我创建了一个新的embed字段,并将其作为对原始消息“slot_embed”的编辑发送。变量i有助于跟踪我们在结果中的进展情况,并帮助我设置适当的current_slot_pics值。

下面是我完成的结果:

最后注意:如果你想要一个带有你为老虎机选择的表情符号的动画,你必须制作一个像赌博机器人使用的gif,并将其作为自定义表情符号上传。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59153933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档