Package: nonebot-plugin-bread-shop
nonebot-plugin-bread-shop⚠️警告须知！本插件不适宜用于群人员较多的群，经过测试，本功能具有极大上瘾性，容易造成bot刷屏，影响正常聊天！📄介绍面包小游戏，用户可以通过“买”，“吃”，“抢”，“送”，”猜拳“操作来获取面包和使用面包。将会记录所有用户的面包数据进行排行所有的操作都可能产生特殊面包事件哦！一起来买面包吧！注：面包数据库一个群一个，排行均属于群内排行，不同群所有数据不相干。💿安装使用 nb-clinbplugininstallnonebot-plugin-bread-shop使用 pippipinstallnonebot-plugin-bread-shop🤔使用指令说明其它形式买面包购买随机数量面包buy，🍞啃面包吃随机数量面包eat，🍞🍞，吃面包抢面包 + @指定用户抢指定用户随机数量面包rob，🍞🍞🍞送面包 + @指定用户送指定用户随机数量面包give，送查看面包 + @指定用户查看指定用户的面包数据check，偷看面包，查看面包面包记录 + @指定用户查看指定用户的操作次数logb，记录面包记录 + “买吃抢赠送猜拳”查看操作次数最多的人logb，记录赌面包 + “石头剪刀布”和bot进行猜拳赌随机数量面包bet，面包猜拳面包帮助送指定用户随机数量面包breadhelp，helpb面包排行发送面包店操作指南（可加查询范围）breadtop，面包排名⚙️自定义配置配置方式：请在NoneBot全局配置文件中添加以下配置项即可。参数说明：bread_thing：可修改默认的“面包”改为其他物品例如： “炸鸡”，“蛋糕”等等（全局）special_thing_group：分群设置物品例如：{"群号": "炸鸡"}可设置主次词，主次物品词bot将以主物品词进行回复，次物品词只用于触发指令，主关键词为列表第一个元素，次关键词可多个 示例：{"群号": ["炸鸡", "面包", "蛋糕"]}global_bread：面包全局开关black_bread_groups：黑名单white_bread_groups：白名单level_bread_num：修改升级一级所需要吃的面包数量，默认为10(注意：等级不被数据库记录数据库只记录已经吃了的数量，修改该值会使用户等级变化，变化可逆)cd_buy,cd_eat,cd_rob,cd_give,cd_bet：操作冷却（单位：秒）max_buy,max_eat,max_rob,max_give,max_bet：操作随机值上限min_buy,min_eat,min_rob,min_give,min_bet：操作随机值下限is_random_give,is_random_eat等：设置是否操作值都由随机值决定(全局)is_random_robbed： 抢面包操作不指定群员可随机抢is_random_given： 送面包操作不指定群员可随机送(注意：改为False之后用户可以通过 "操作名 + @ + 数量" 或 "操作名 + 数量" 达到效果)special_操作名_group：设置特别处理的群 （示例： {"群号": bool}）global_database: 数据库是否全局，若设置了group_database，以其为优先，全局数据库文件夹名为"global"group_database: 合并一些群的数据库 分组id将作为文件夹名 例：{"分组id":["群号1", "群号2", "群号3"]}is_at_valid: 选择是否启用有效at （由于担心风控影响，可自行选择）注意：此处的分组id将生效于 special_thing_group 的设置 示例{"分组id": "炸鸡"}，原来的设置将失效。特殊事件同理设置的群聊id同理请改为组id详情请见config.py文件🍞自定义事件在bread_event.py中可以编写特殊事件！可以在issue中提供你的点子！特殊事件模板：group_id_list默认为全部群聊priority默认为5，数字越低越优先，优先级相同的事件先后顺序每次随机@probability(概率,Action.操作,priority=优先级,group_id_list=["群号1","群号2"])def函数名(event:操作):# event.user_data 可以查看操作的用户的面包数据# event.user_id   可以获取操作的用户的id（qq）# event.user_id   可以获取操作的用户的id（qq）# event.bread_db.reduce_bread(event.user_id, eat_num) 减少用户面包数量# event.bread_db.reduce_bread(event.user_id, eat_num) 增加用户面包数量# event.bread_db.add_bread(event.user_id, eat_num, "BREAD_EATEN")  增加用户面包食用量# event.bread_db.update_no(event.user_id)  更新用户排名# event.bread_db.ban_user_action(event.user_id, Action.EAT, 1800) 禁止用户操作# event.bread_db.cd_refresh(event.user_id, Action.EAT)        刷新用户CD# event.bread_db.update_cd_stamp(event.user_id, Action.GIVE)  重置用户CD# 等等见源码returnappend_text# 返回回答，由bot发送特殊事件示例：@probability(0.1,Action.EAT,priority=5)defeat_event_much(event:EatEvent):ifevent.user_data.bread_num<=MAX.EAT.value:returneat_num=random.randint(MAX.EAT.value,min(MAX.EAT.value*2,event.user_data.bread_num))event.bread_db.reduce_bread(event.user_id,eat_num)event.bread_db.add_bread(event.user_id,eat_num,"BREAD_EATEN")append_text=f"成功吃掉了{eat_num}个面包w！吃太多啦，撑死了，下次吃多等30分钟！"event.bread_db.update_no(event.user_id)event.bread_db.ban_user_action(event.user_id,Action.EAT,1800)returnappend_text若想要设置买面包打烊时间如：@probability(1,Action.EAT,priority=1,group_id_list=["群号1","群号2"])defclosing_time(event:EatEvent):if判断时间:event.bread_db.reduce_user_log(event.user_id,Action.EAT)# 防止记录return"打烊"其他注意点：event.normal_event()为事件正常进行全流程并返回原来的话。例如：@probability(0.1,Action.BET,priority=5)defbet_event_addiction(event:BetEvent):append_text=event.normal_event()append_text+=" 有点上瘾，你想再来一把！"event.bread_db.cd_refresh(event.user_id,Action.BET)returnappend_textreturn None 相当于事件不触发，返回任何字符串都认定为事件触发