我正试图在我的服务器上复制一些来自一些不和谐机器人的游戏,其中之一就是老虎机。
借鉴node.js。
我已经创建了它的克隆,但我遗漏了一个元素->表情符号循环。
基本上,在相同的嵌入消息中,机器人让每个图标循环;就像真正的老虎机一样,然后停在一个图标上,然后移动到下一个图标,并做同样的事情。我的bot一次处理所有这些内容,所以如果您键入+插槽1000,它将发送回一个消息,其中包含已经选择的插槽。
我如何让我的机器人在表情符号中循环,然后移动到下一个表情符号,并在显示所有信息之前执行相同的操作?
我是不是遗漏了什么“等待秒”的功能?
我假设动画图标只是一个自定义的表情符号,通过每个选项,但我仍然不确定如何真正去:
动画表情符号-> 0.5s之后选择一个-> 0.5s之后动画秒-> 0.5s之后选择一个,等等。
干杯!

发布于 2020-07-14 03:49:08
所以我对这个机器人也有同样的疑问。我对这里没有任何答案感到失望,但我最终找到了答案。最初,我只是尝试每秒更新表情符号几次,让它看起来像是在骑车。然而,这种方法不起作用,因为有5个“事情”的速率限制(你只能在1秒内编辑5个消息(或5个事情))。
他们实际上在做什么(就像你暗示的那样)是使用一个自定义的动画表情符号。如果你想使用他们的表情符号,你可以在here上找到它。然后你需要下载这个gif并将其导入到你的机器人的discord服务器中。您可以更改表情符号的标记,即:name:,用于在服务器中调用它。我把我的命名为:cycle_test:。如果然后输入以下文本到聊天机器人或在服务器频道上,它将给你自定义表情的唯一标识符:\:cycle_test:。只需右键单击您的消息并单击"quote“,它将为您提供这个唯一的标识符,对我来说是这样的:<a:cycle_test:732311116742393856>。
现在你已经有了你的动画表情的标识符,你可以在不一致的嵌入中使用它。我使用的是Python,但语法应该非常类似:
embed.add_field(name="Slot results", value="<a:cycle_test:732311116742393856>")。然后,您需要添加代码以等待一两秒钟,并且当您遍历所有的槽结果时,您将一次停止一列。只有当您想要显示某列的结果时,才会进行编辑,如果您在每个结果之间给它大约一秒钟的时间,它就不会达到限制。
下面是我使用的代码(同样,它是用Python编写的,但逻辑应该可以帮助您弄清楚它)
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,并将其作为自定义表情符号上传。
https://stackoverflow.com/questions/59153933
复制相似问题