使用动画骰子

Telegram 支持发送动态骰子表情符号。这是通过使用骰子构造函数实现的:

inputMediaDice#e66fbf7b emoticon:string = InputMedia; messageMediaDice#3f7ee58b value:int emoticon:string = MessageMedia;inputStickerSetDice#e67f520e emoticon:string = InputStickerSet;messages.stickerSet#6e153f16 set:StickerSet packs:Vector<StickerPack> keywords:Vector<StickerKeyword> documents:Vector<Document> = messages.StickerSet;---functions---messages.sendMedia#ac55d9c1 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo media:InputMedia message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long allow_paid_stars:flags.21?long suggested_post:flags.22?SuggestedPost = Updates;messages.getStickerSet#c8a0ec74 stickerset:InputStickerSet hash:int = messages.StickerSet;help.getAppConfig#61e3f854 hash:int = help.AppConfig;

启动时,客户端应使用 `help.getAppConfig` 获取应用配置。
然后,对于emojies_send_dice字段中包含的每个骰子表情符号,客户端应调用 `messages.getStickerSet`方法获取骰子表情符号贴纸集,并将正确填充的`inputStickerSetDice`传递给该stickerset字段。
返回的贴纸集将包含一组动画贴纸,每个骰子点数对应一个贴纸,此外还有一个循环播放的初始贴纸,用于在实际发送骰子之前向用户显示预览。

如果用户尝试发送指定表情符号中的单个表情符号emojies_send_dice,则应使用messages.sendMedia发送骰子表情符号,并将骰子表情符号提供给该emoticon字段。

接收到的骰子贴纸将以messageMediaDice构造函数的形式发送,同时还会收到一个随机生成的服务器端值,该值介于 1 到此类型骰子允许的最大值之间。
客户端应根据指定的值显示正确的骰子动画贴纸:由于骰子值从 1 开始,并且骰子贴纸集中的第一个动画贴纸是预览,因此value可以直接使用索引documents从动画贴纸集中获取贴纸数组。

配置emojies_send_dice_success参数包含除基本表情符号之外的更多关于骰子表情符号的信息🎲

"emojies_send_dice_success": {"\ud83c\udfaf": {"value": 6,"frame_start": 62},"\ud83c\udfc0": {"value": 5,"frame_start": 110}}

每个骰子表情符号都指定了最大“获胜”值,以及显示烟花特效的帧数🎆。请注意,骰子动画贴纸在首次
发送/接收后应仅循环播放一次;点击骰子贴纸应弹出窗口,邀请用户发送同类型的新骰子。

老虎机

老虎机🎰骰子贴纸的实现方式略有不同:它value不是直接用于索引贴纸数组,而是按如下方式使用。

该value值由三个 2 位值组成,每个值指示要在三个槽位中显示的动画贴纸,每个值递增 1。

该stickers数组的组成如下:

动画播放方法(所有贴纸直接重叠放置即可,无需特殊摆放):

示例实现:tdesktop。