trbot Channel
13 subscribers
2 photos
7 links
当前机器人 @trvoicebot
测试群组兼讨论群
https://t.me/+BomkHuFsjqc3ZGE1
Download Telegram
今天改了下载贴纸的功能,计划是支持将 .tgs 格式的贴纸转换成 GIF 下载,下载单个贴纸的功能是写好了,但是会破坏掉下载贴纸包的功能,就暂时还没有更新

更新之后下载贴纸包就可以支持下 png webm 和 tgs 三种贴纸,不像之前只能下 png 了,不过因为服务器性能原因,肯定会限制使用量就是了
🥰1
trbot Channel
下载单个贴纸的功能是写好了,但是会破坏掉下载贴纸包的功能,就暂时还没有更新
今天傍晚开始其实已经更新了,途中打包转换视频和动画贴纸的功能也能用

但我发现我忘了 Telegram Bot 官方 API 服务器的限制,上传限制 50 MB,就算是动画贴纸转换出来至少也有 1 MB,打包是成功了,但是超过上传文件大小就发不出去...

于是现在:
可以下载静态、视频和动画三种贴纸
暂时禁用了贴纸包下载(两种都禁用了)
当一个贴纸包被频道收藏时,每个人都可以看到一个链接指向收藏频道
1
机器人连续运行了好几天,今天看了看日志,并没有什么严重的错误,倒是发现当有用户连续下贴纸时,没做缓存目录区分,导致会下到错误的贴纸,要把下载贴纸写成队列才行

teamspeak 插件的轮询重连过程卡住的问题知道个大概了,尝试从数据竞态的方面修一修,如果进度顺利的话还能开放多实例,每个群组都能绑定一个自己的服务器,而不需要自建机器人
trbot Channel
多实例
这个其实写的差不多了,然后发现如果给配置文件加锁,每个服务器配置也加一个锁,就会变得十分难搞,于是又放弃了
trbot Channel
当有用户连续下贴纸时,没做缓存目录区分,导致会下到错误的贴纸
这个问题我都忘了修没修了,估计是修了

现在给下载贴纸和贴纸包都加了互斥锁,差不多等于队列吧... 不过没有队列提示,如果其他用户正在下贴纸包,机器人对贴纸暂时没有响应是正常的
trbot Channel
teamspeak 插件的轮询重连过程卡住的问题知道个大概了,尝试从数据竞态的方面修一修
这个加了互斥锁,似乎还是会发生问题,在于调用 teamspeak 库的 close 方法时有概率会一直卡住,它也不吃上下文超时的影响,没有头绪了
trbot Channel
这个问题我都忘了修没修了,估计是修了 现在给下载贴纸和贴纸包都加了互斥锁,差不多等于队列吧... 不过没有队列提示,如果其他用户正在下贴纸包,机器人对贴纸暂时没有响应是正常的
贴纸这个改了改,虽然限制还在,但是在需要等待的时候会得到一个提示,不至于觉得机器人似掉了

同时优化了一下下载贴纸包时的逻辑,如果下载的是已经打包过的贴纸,会直接跳过之前先遍历一遍本地文件的过程

当贴纸包有更新时,也能区分有变动的部分贴纸,之前是只看贴纸数量,如果之前下载过这个贴纸包,但后面这个贴纸包删了一个又加了一个,总数没变,下载时就不会再出现下不到新贴纸的情况了
同时修复了检测关键词在通知用户时,如果触发关键词的消息太长,加上原本的格式化信息后可能超出 Telegram 单条信息文本长度限制(4096 个字符),导致没法发送出通知的问题

至于解决方法其实就是直接将原消息的长度砍到最长 2048 个字符,因为格式化信息说不准用户和群组或频道的昵称会有多长,还是设一个保守一点的数值比较好
今天简单更新了一下,主要是限制了贴纸数量大于 120 个的贴纸包的打包下载功能

目前普通用户创建的贴纸包最大限制都是 120 个,只有 AnimatedEmojies 这个贴纸包有将近六百个贴纸,今天有用户点到下载这个贴纸包,直接让机器人一直忙着下载这个贴纸包,其他用户想下其他贴纸都得等着,就紧急更新了一下

至于普通贴纸包是没有影响的,因为我还没见过有第二个超过 120 个贴纸的贴纸包

其次就是把 mp4 贴纸转换成 GIF 的功能也算到了下载贴纸队列里,因为服务器性能原因嘛,只能这样限制了
最近大家下贴纸包的有点多,而且有些贴纸包都是动图,转换后每个贴纸包存起来有大约 200MB,服务器空间有点不够用了。为了保证机器人正常运行,我需要保证服务器硬盘有空余

大家若在下载贴纸包时发现机器人给的是链接而不是文件时,若有需要请尽快下载,之后贴纸包会按着时间先后顺序来逐步清理

也就是代表这些下载链接会更快的过期
trbot Channel
计划在月底公开代码仓库
跳票王

显然我觉得还没有写完,但后面可能空闲时间没那么多了,如果有人感兴趣的话,可以来这看看

https://gitea.trle5.xyz/trle5/trbot
注:如果想基于这个机器人开发插件的话,目前还不推荐,可能后续还会有不少破坏性改动
孩子们,虽然 Cloudflare 坠机了,但我的 bot 还有长轮询模式,机器人没炸,但下贴纸包可能会有点小影响
今天发现了一个问题,当用户在 @stickers 机器人创建贴纸包时,贴纸包的 setName 长度最长是 62 个字符

而其他贴纸 bot 也可以创建贴纸包,但是 setName 需要以 _by_@botname 结尾,根据机器人的用户名长度,实际上可用的字符数量是不如前者多的

但是其他贴纸 bot 创建的贴纸包 setName 长度最长可以 64 个字符,例如 神秘紫毛 2 @ACG_Arts 贴纸包

机器人发贴纸时,机器人会回一个带有按钮的消息,用来下载贴纸包,而这些按钮的作用本质是不同的字符串信息,叫做 callback query,这个也有长度限制,最大是 64 个字符

因为功能多,我就不可能把这 64 个字符都留给下贴纸包的功能,我需要加一个前缀来分辩这个按钮触发的是什么功能,而之前我以为贴纸包 setName 上限就是 62,就留了两个字符判断,而今天这个情况就会导致 2 + 64,超出 64 个字符串的限制,发送消息失败,就下不到贴纸

得改一下了,把贴纸包的 setName 缓存起来,通过 ID 来下载
最近没写什么更新信息也确实没更新什么

近期不知道为什么 bot 被当成私信 bot 了,现在数据库里一堆广告号的信息,使用倒是没什么影响,但保存数据库的时候因为 map 和广告消息,基本上保存一次就得吃 40MB+ 内存,虽然有垃圾回收嘛对运行也没什么影响,但就是看着膈应

最近也是没什么时间考虑这个,或许得学学 SQL 用点正经的数据库了