Drifting Bottles

使用《署名—非商业性使用—相同方式共享 4.0 协议国际版》(CC BY-NC-SA 4.0)进行授权。
https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.zh-Hans

脚本已停止更新,请移步有更多自定义选项的升级版

同时安利一下mirai论坛的漂流瓶插件,这个超赞的!


基本信息

  • 作者:兔兔
  • 联系方式:QQ:1142145792
  • 文件版本:v1.5
  • 更新日期:2022/02/06
  • 简介:向海里投入漂流瓶,也可以收取大家的留言
  • 关键词扔漂流瓶 xxxxx 捡漂流瓶 跳进海里
  • 许可协议:CC-BY-NC-SA 4.0

详细介绍

效果图

本脚本也可以修改部分文本,详细内容见下:


下载地址

请诸位于2022年2月6日00:30前下载此脚本、并计划更新的骰主知悉:脚本已更换编码格式,现支持识别中文路径。但贸然更新会导致旧漂流瓶存档文本全部乱码,若想更新为ANSI编码版本,请务必在更新前做好漂流瓶内容的备份,并按照以下方式进行操作:

  1. 剪切DiceQQ/plugin/DriftingBottles.luaDiceQQ/plugin/bottle/Dbottle_letter.txt并黏贴至别处
  2. 将下载好的新文件放入plugin文件夹,若有自定义内容则按原设置更改自定义区的配置
  3. 打开新的DiceQQ/plugin/bottle/Dbottle_letter.txt,复制第一步的Dbottle_letter.txt中全部文本内容并粘贴至前者文档中
    (其实有条件的骰主可以在替换完lua脚本后直接把Dbottle_letter.txt转码成ANSI,也可以解决的)
v10.zip
4kB

v1.0

v12.zip
5kB

v1.2-新增三项基本功能的每日次数上限,默认扔捡漂流瓶各30次、跳海1次。新增重置次数功能。

v13.zip
5kB

v1.3-对重置次数功能的小优化。

v14.zip
6kB

v1.4-新增监听功能,可向指定群/小窗/通知窗口发送监听信息,方便骰主第一时间偷窥用户小秘密捕捉定位发送敏感信息的刁民。默认关闭。

v15.zip
6kB

v1.5-新增禁止小窗功能,优先级高于监听,会无视一切小窗发送的漂流瓶系列消息。默认关闭。
因为连好友消息也会禁,某种意义上算是无用更新……

utf-8.zip
25kB

另,这是v1.0至v1.5的UTF-8格式文件留档,不识别中文路径。后续若有更新,将在该压缩包内保留该格式文件备份。

安装方法:
共一个bottle文件夹与一个DriftingBottles.lua文件,将二者全部拖入plugin文件夹


目前已知问题:
1.使用MiraiAndroid不会调用指定路径的txt,而是在files创建一个名为“Dicexxxxx\plugin\bottle\Dbottle_letter.txt”的文件,每次读写都使用这个文件,电脑端Dice使用正常。该问题对一般使用无明显影响。个人认为是由于手机文件储存路径逻辑与电脑略有不同,但由于本人不再进行Android端脚本维护,该问题将不进行任何调整的尝试。
2.目前已通过将脚本编码转为ANSI格式的方式成功识别中文路径,但由于完全不在自己擅长的领域,不确定该方式的稳定性。请更新的骰主务必做好文件备份

11 天 后

更新了:
新增了漂流瓶的每日上限
给阅后即焚模式做了判定式,现在可以直接在自定义区改了
基于漂流瓶上限又做了重置次数功能,需要在自定义区将骰主QQ改为自己
其实是上周五搞定的东西……现在才想起来这里也传一份

v12.rar
5kB
6 天 后

好喜欢这个脚本,可惜中文路径阻挡了我QAQ

写的很棒!又学到了一点,蟹蟹大佬!

24 天 后
我怎么老在深夜更新

更新了:
漂流瓶重置支持@用户,在群聊内无需手动输入QQ号。
修复了漂流瓶重置指令填入数字以外的内容后会报错的状况。(原先版本仅会于0级窗口报错且不执行指令,不影响正常使用)

v13.zip
5kB

说起来这次更新挺有趣的
sion的用户群也被我用来当作待办更新备忘录群(全体群员监督的那种),然后我那次是嫌打QQ号太麻烦了,在群里讲了一句:漂流瓶重置支持@用户而非只能输入账号 用来顺手放进精华消息里
敏锐的捕捉到指令头的sion:sion读取lua文件DriftingBottles.lua失败!
我:老人 地铁 手机.jpg
另外我看的脚本手册属实是过时了十几个版本,今天才发现正则匹配什么的在网页版开发手册里有教

好奇怪啊为什么我后续的更新里梦境增强剂瓶这个东西就一直留在列表里面了,好嘛这下成夹带私货了
10 天 后
sion虽然即将停机,但我的更新还未止步。

由于之前曾经出现过sion被拉入政治敏感群的情况,而在我下载了一个4w3+个对象的敏感词库并努力阅读筛选了3000词并直呼自己是不是浪费了2小时的人生后,才想到的这个办法:

我直接开个监听不就好了?

我是不是傻???

于是推出了含有监听功能的1.4版,没有这个需求的可以不更新。监听相关内容全部在自定义中。

v14.zip
6kB

先占个坑,タブー術提醒我可以设置成通知窗口,等我去研究研究,就不发新版本了在1.4基础上改改就行
改好了

12 天 后

lanlijingxiang 你的Dice是不是放在中文路径
感谢タブー術,找到问题解决方法了,需要把所有脚本都转一遍码,等会全部重传,我尽快搞定
属于是之前卡了这么久的问题虽然知道是编码导致的但现在才搞明白具体怎么操作
不过心里没啥底,可能会导致问题……

把全部版本都改了一遍,能识别中文路径了

请问,我修改后的日上限监测脚本只能在一段时间内监测到上限(尤其是跳海程序)并返回已上限的回复,但是,同样的群,同样群成员等待一段时间后再次发送跳海指令,又是正常回复且重新计算跳海次数了。是否是代码出了什么问题?还是某些默认设置改错了?

-- 跳海,默认为“跳进海里”
drown_self_order = "跳进海里"
--限制跳海名单
banned_drawn_qq = "xxxxxxxxx"
--限制跳海名单的跳海上限
banned_everyday_max_drawn = 1
-- 跳海程序(会往海里添加一具尸体)
function bottle_num(msg)
	if ( msg.fromQQ == banned_drawn_qq ) then
		local letter = read_file(bottle_text_path)
		local letter_list = {}
		local today_drawn = getUserToday(msg.fromQQ,"DB_everyday_drown")
		letter_list = Split(letter,"c2xhc2g=") 
		if (today_drawn>= banned_everyday_max_drawn) then
			return "一位英俊的菲林少年注意到了{nick}近日的反常举动,并将其报告给了这片海域的监视者。\n警觉的监视者加强了海岸的安全防护,{nick}现在只能遥望着海面沉浮的".. #letter_list-1 .."个物体独自兴叹了。"
		else
			date=os.date("%Y-%m-%d %H:%M:%S")
			if ( msg.fromGroup == "0" ) then
			text_full = "[CQ:image,url=http://q1.qlogo.cn/g?b=qq&nk="..msg.fromQQ.."&s=640]\n海面飘来了"..getUserConf(msg.fromQQ,"nick","某人").."的浮尸。\nTA于"..date.."悄悄潜入海底……TA在泰拉的渊洄中望见了什么?唯有回望TA的深渊知晓。c2xhc2g="
			else
			text_full = "[CQ:image,url=http://q1.qlogo.cn/g?b=qq&nk="..msg.fromQQ.."&s=640]\n海面飘来了"..getUserConf(msg.fromQQ,"nick","某人").."的浮尸。\n他于"..date.."在"..getGroupConf(msg.fromGroup, "name", "获取群名参数错误!").."("..msg.fromGroup..")处的海边沉入深海——回归一切的起源,回归诞生的黑暗。c2xhc2g="
			end
			write_file(bottle_text_path,text_full)
			setUserToday(msg.fromQQ, "DB_everyday_drown", today_drawn+1)
			return "{nick}仿佛被某种声音——某种音乐——引向海岸,等{nick}回过神,波涛与黑暗已经卷挟着".. #letter_list-1 .."个物体一并汹涌而来。\n……\n它们吞噬了{nick},也将永远伴随TA。"
		end
	end
	local today_drawn = getUserToday(msg.fromQQ,"DB_everyday_drown")
	if ( today_drawn >= DB_everyday_max_drown ) then	
		local letter = read_file(bottle_text_path)
		local letter_list = {}
		letter_list = Split(letter,"c2xhc2g=") 
		reply_list = {
            "{nick}试图重温被海水与寒冷包围浸没的感觉;意识浮沉之际,".. #letter_list-1 .."道影子在视野中一晃而过。\n……\n眨眼间,{nick}在跃落的海岸醒来,一位英俊的菲林少年正疑惑又担忧地望着TA。{nick}不记得在海中看到的光景,唯有咸涩的海盐残留在皮肤上,仿佛音乐与求死的极乐都是一场幻梦。",
			"{nick}刚想再次跳入海里,却被一位英俊的菲林少年拉住了手腕。\n“请不要如此轻贱生命。”他蹙着眉说。\n{nick}只能依稀看见".. #letter_list-1 .."个物体在波浪中沉浮:那海水依旧深邃,却不再拥有吸引{nick}投身其中的魔力。TA跟随着少年的脚步,踉踉跄跄离开了海岸。"
        }  
        random_reply =  reply_list[math.random(#reply_list)]
        return random_reply 
	else
		local letter = read_file(bottle_text_path)
		local letter_list = {}
		letter_list = Split(letter,"c2xhc2g=") 
		date=os.date("%Y-%m-%d %H:%M:%S")
		if ( msg.fromGroup == "0" ) then
		text_full = "[CQ:image,url=http://q1.qlogo.cn/g?b=qq&nk="..msg.fromQQ.."&s=640]\n海面飘来了"..getUserConf(msg.fromQQ,"nick","某人").."的浮尸。\nTA于"..date.."悄悄潜入海底……TA在泰拉的渊洄中望见了什么?唯有回望TA的深渊知晓。c2xhc2g="
		else
		text_full = "[CQ:image,url=http://q1.qlogo.cn/g?b=qq&nk="..msg.fromQQ.."&s=640]\n海面飘来了"..getUserConf(msg.fromQQ,"nick","某人").."的浮尸。\n他于"..date.."在"..getGroupConf(msg.fromGroup, "name", "获取群名参数错误!").."("..msg.fromGroup..")处的海边沉入深海——回归一切的起源,回归诞生的黑暗。c2xhc2g="
		end
		write_file(bottle_text_path,text_full)
		setUserToday(msg.fromQQ, "DB_everyday_drown", today_drawn+1)
		return "{nick}仿佛被某种声音——某种音乐——引向海岸,等{nick}回过神,波涛与黑暗已经卷挟着".. #letter_list-1 .."个物体一并汹涌而来。\n……\n它们吞噬了{nick},也将永远伴随TA。"
	end
end
msg_order[drown_self_order] = "bottle_num"

    cyphoeris 通常来说setUserToday是计算用户单日数量的,会在0时重置(不过看你回复的时间应该不是这个问题)
    然后……我看代码感觉好像确实并没有逻辑上的错误,怪起来了——

      Lily Black 是的 🤣 而且因为我没用服务器,人又在国外,我不知道这是不是会影响,反正骰子的好感送礼程序也会时不时地重新计数,感觉国内和我这边的0点都会各清空一次?(再加上两边非零点的清空,就很混乱)

        扔漂流瓶图片,后台有显示但是实际没有反应,如果抽到也是一样,这个怎么整呀?

          Shan 这个是tx屏蔽了聊天中的缓存图片,我从一段时间之前就这样了,同理对骰娘发送“.r[图片]”这种东西也是显示不出来的(私聊倒是可以)
          如果要做到存图并重新发送的话就需要lua以外的插件了,可能隔壁有解决方法,不过我没试过
          我这里的解决方法是如果你需要的话我可以写个识别图片并拒收XD
          怀念以前能发图的时候群友往里面塞的色图和美食图了……

          • Shan 回复了此帖