目 录CONTENT

文章目录

Bncr无界机器人框架使用指南

Administrator
2023-07-16 / 0 评论 / 2 点赞 / 922 阅读 / 24613 字

一 Bncr介绍

XLIxK.png


二 安装资源

1. 安装文档

2. 下载使用

推荐Docker方式安装

  • DockerHub:Bncr
  • 🐷 Bncr1.x更新至2.0步骤请查看3.1章--更新提示
  • 🐷 Bncr2.0已新增Web界面,但不完善配置操作仍需使用SSH命令

三 安装步骤

3.1 安装Bncr

  1. 获取授权码

    访问机器人 https://t.me/red_Lights_Districts_Bot 发送

    /start
    

    然后进群组 https://t.me/BncrJSChat 发送

    /get_token
    

    机器人会回复你的token

  2. docker部署

    首先创建一个文件夹,比如,进入文件夹后shell下执行

    docker run -dit \
     -v $(pwd):/bncr/BncrData \
     --network=host \
     --name bncr \
     --hostname bncr \
     --restart on-failure:5 \
     --log-opt max-size=5m \
     --log-opt max-file=3 \
    anmour/bncr
    

    编辑 conf/config.js,这是 bncr 的配置文件,填写第一步获取的授权码

    再次启动无界,安装完成

    docker start bncr
    

🐷 笔者为群晖环境,宿主机映射路径为 -v /volume1/docker/bncr2:/bncr/BncrData

  • [ ] 更新 (可选)

  • 更新2.0版本前请备份BncrData文件(复制粘贴一份到别的地方,防止有bug导致旧版数据丢失),

  • 更新2.0版本前请删除Adapter文件夹下所有适配器,删除官方插件,否则会报错,

  • 首次更新/安装2.0版本需要关注控制台,需要重新配置Bncr(不多)

  • 1.x用户需要使用官方插件中的数据库迁移插件迁移旧版数据库至新数据库

  • 建议老用户重新安装一个新的容器,然后把需要的东西迁移到2.0

  • 旧版本插件都兼容,只是没有web配置功能

docker run --rm \
 -v /var/run/docker.sock:/var/run/docker.sock \
 containrrr/watchtower \
 -c --run-once \
bncr
  • [ ] 卸载(可选)
docker rm -fv bncr
docker rmi anmour/bncr

3.2 基础设置

进入bncr交互模式,shell下执行

docker attach bncr

如果要退出交互模式,按住 Ctrl + p + q

各平台管理员设置,其实设置的是适配器的管理,不是按平台来的,支持多管理,& 分隔,发给机器人

set system name xxx
set system password xxx
set qq admin xxx
set tgBot admin xxx
set HumanTG admin xxx
set qqOutside admin xxx
set wxKeAImao admin xxx
set wxQianxun admin xxx
set wxXyo admin xxx

🐷 2.0版Web账号和密码需要进交互模式设置(Web界面随便输入登录会有提示设置方法)

监听某群,在群内发送

监听该群

其他命令参考 基础命令

3.3 安装插件

3.3.1 官方插件

红灯区

git clone https://github.com/RedLightsDistrict/Bncr_plugins.git 红灯区
let RspyList = {
    /* 监控信息配置 */
    SpyList: [
  
        {
            Name: '[KR] 店铺抽奖通用活动-加密',
            Script: 'KingRan_KR/jd_luck_draw.js',
            ListenEnv: [
                'LUCK_DRAW_URL',
            ],
            TimeOut: 50,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 粉丝互动通用活动-加密',
            Script: 'KingRan_KR/jd_wxFansInterActionActivity.js',
            ListenEnv: [
                'jd_wxFansInterActionActivity_activityId',
            ],
            TimeOut: 50,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 超级无线店铺签到-监控版',
            Script: 'KingRan_KR/jd_sevenDayjk.js',
            ListenEnv: [
                'jd_sevenDay_activityUrl',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 生日礼包和会员等级礼包',
            Script: 'KingRan_KR/jd_wxMcLevelAndBirthGifts.js',
            ListenEnv: [
                'jd_wxMcLevelAndBirthGifts_activityId',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 加购有礼通用-加密',
            Script: 'KingRan_KR/jd_wxCollectionActivity.js',
            ListenEnv: [
                'jd_wxCollectionActivity_activityUrl',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 关注店铺有礼',
            Script: 'KingRan_KR/jd_wxShopFollowActivity.js',
            ListenEnv: [
                'jd_wxShopFollowActivity_activityUrl',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 分享有礼-加密',
            Script: 'KingRan_KR/jd_wxShareActivity.js',
            ListenEnv: [
                'jd_wxShareActivity_activityId',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 集卡抽奖通用活动',
            Script: 'KingRan_KR/jd_wxCollectCard.js',
            ListenEnv: [
                'jd_wxCollectCard_activityId',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 邀请赢大礼',
            Script: 'KingRan_KR/jd_prodev.py',
            ListenEnv: [
                'yhyauthorCode',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 知识超人',
            Script: 'KingRan_KR/jd_wxKnowledgeActivity.js',
            ListenEnv: [
                'jd_wxKnowledgeActivity_activityUrl',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 购物车锦鲤通用活动',
            Script: 'KingRan_KR/jd_wxCartKoi.js',
            ListenEnv: [
                'jd_wxCartKoi_activityId',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 读秒拼手速通用活动',
            Script: 'KingRan_KR/jd_wxSecond.js',
            ListenEnv: [
                'jd_wxSecond_activityId',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 店铺礼包特效',
            Script: 'KingRan_KR/jd_wxShopGift.js',
            ListenEnv: [
                'jd_wxShopGift_activityUrl',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 收藏大师-幸运抽奖',
            Script: 'KingRan_KR/jd_txzj_lottery.js',
            ListenEnv: [
                'jd_lottery_activityUrl',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 邀请入会赢好礼(京耕)',
            Script: 'KingRan_KR/jd_jinggeng_showInviteJoin.js',
            ListenEnv: [
                'jd_showInviteJoin_activityUrl',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 微定制瓜分福袋-加密',
            Script: 'KingRan_KR/jd_wdzfd.js',
            ListenEnv: [
                'jd_wdzfd_activityId',
                'jd_wdzfd_activityUrl'
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 微定制瓜分京豆-加密',
            Script: ' KingRan_KR/jd_wdz.js',
            ListenEnv: [
                'jd_wdz_activityId',
                'jd_wdz_activityUrl'
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 收藏大师-幸运抽奖',
            Script: 'KingRan_KR/jd_txzj_lottery.js',
            ListenEnv: [
                'jd_lottery_activityUr',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 收藏大师-关注商品',
            Script: 'KingRan_KR/jd_txzj_collect_shop.js',
            ListenEnv: [
                'jd_collect_shop_activityUrl',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 收藏大师-关注有礼',
            Script: 'KingRan_KR/jd_txzj_collect_item.js',
            ListenEnv: [
                'jd_collect_item_activityUrl',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 收藏大师-加购有礼',
            Script: 'KingRan_KR/jd_txzj_cart_item.js',
            ListenEnv: [
                'jd_cart_item_activityUrl',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 加购有礼(lzkj_loreal)',
            Script: 'KingRan_KR/jd_lzkj_loreal_cart.js',
            ListenEnv: [
                'jd_lzkj_loreal_cart_url',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 幸运抽奖(lzkj_loreal)',
            Script: 'KingRan_KR/jd_lzkj_loreal_draw.js',
            ListenEnv: [
                'jd_lzkj_loreal_draw_url',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 关注有礼(lzkj_loreal)',
            Script: 'KingRan_KR/jd_lzkj_loreal_followShop.js',
            ListenEnv: [
                'jd_lzkj_loreal_followShop_url',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] 邀请有礼(lzkj_loreal)',
            Script: 'KingRan_KR/jd_lzkj_loreal_invite.js',
            ListenEnv: [
                'jd_lzkj_loreal_invite_url',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] CJ组队瓜分京豆-加密',
            Script: 'KingRan_KR/jd_cjzdgf.js',
            ListenEnv: [
                'jd_cjhy_activityId',
                'jd_cjhy_activityUrl'
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] CJ每日抢好礼通用活动',
            Script: 'KingRan_KR/jd_cjdaily.js',
            ListenEnv: [
                'jd_cjdaily_activityId',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] LZ组队瓜分京豆-加密',
            Script: 'KingRan_KR/jd_zdjr.js',
            ListenEnv: [
                'jd_zdjr_activityId',
                'jd_zdjr_activityUrl'
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] LZ刮刮乐抽奖通用活动',
            Script: 'KingRan_KR/jd_drawCenter.js',
            ListenEnv: [
                'jd_drawCenter_activityId',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] LZ每日抢好礼通用活动',
            Script: 'KingRan_KR/jd_daily.js',
            ListenEnv: [
                'jd_daily_activityId',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] LZ店铺游戏',
            Script: 'KingRan_KR/jd_wxgame.js',
            ListenEnv: [
                'jd_wxgame_activityId',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] LZ让福袋飞',
            Script: 'KingRan_KR/jd_wxUnPackingActivity.js',
            ListenEnv: [
                'jd_wxUnPackingActivity_activityId',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[KR] LZ盖楼有礼',
            Script: 'KingRan_KR/jd_wxBuildActivity.js',
            ListenEnv: [
                'jd_wxBuildActivity_activityId',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M幸运抽奖',
            Script: 'walle1798_WALL.E/m_jd_wx_luckDraw.js',
            ListenEnv: [
                'M_WX_LUCK_DRAW_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M组队瓜分',
            Script: 'walle1798_WALL.E/m_jd_wx_team.js',
            ListenEnv: [
                'M_WX_TEAM_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M关注有礼无线',
            Script: 'walle1798_WALL.E/m_jd_wx_shopGift.js',
            ListenEnv: [
                'M_WX_SHOP_GIFT_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M分享有礼',
            Script: 'walle1798_WALL.E/m_jd_wx_share.js',
            ListenEnv: [
                'M_WX_SHARE_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ]M读秒手速',
            Script: 'walle1798_WALL.E/m_jd_wx_secondDraw.js',
            ListenEnv: [
                'M_WX_SECOND_DRAW_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M等级/生日礼包',
            Script: 'walle1798_WALL.E/m_jd_wx_levelBirth.js',
            ListenEnv: [
                'M_WX_LEVEL_BIRTH_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M知识超人',
            Script: 'walle1798_WALL.E/m_jd_wx_knowledge.js',
            ListenEnv: [
                'M_WX_KNOWLEDGE_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M关注抽奖',
            Script: 'walle1798_WALL.E/m_jd_wx_followDraw.js',
            ListenEnv: [
                'M_WX_FOLLOW_DRAW_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M无线游戏',
            Script: 'walle1798_WALL.E/m_jd_wx_game.js',
            ListenEnv: [
                'M_WX_GAME_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M完善有礼',
            Script: 'walle1798_WALL.E/m_jd_wx_completeDraw.js',
            ListenEnv: [
                'M_WX_COMPLETE_DRAW_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M集卡抽奖',
            Script: 'walle1798_WALL.E/m_jd_wx_collectCard.js',
            ListenEnv: [
                'M_WX_COLLECT_CARD_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M老虎机抽奖',
            Script: 'walle1798_WALL.E/m_jd_wx_centerDraw.js',
            ListenEnv: [
                'M_WX_CENTER_DRAW_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M盖楼领奖',
            Script: 'walle1798_WALL.E/m_jd_wx_buildDraw.js',
            ListenEnv: [
                'M_WX_BUILD_DRAW_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M加购有礼',
            Script: 'walle1798_WALL.E/m_jd_wx_addCart.js',
            ListenEnv: [
                'M_WX_ADD_CART_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M关注有礼',
            Script: 'walle1798_WALL.E/m_jd_follow_shop.js',
            ListenEnv: [
                'M_FOLLOW_SHOP_ARGV',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M收藏有礼',
            Script: 'walle1798_WALL.E/m_jd_fav_shop_gift.js',
            ListenEnv: [
                'M_FAV_SHOP_ARGV',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
        {
            Name: '[MJ] M粉丝红包',
            Script: 'walle1798_WALL.E/m_jd_fans_redPackt.js',
            ListenEnv: [
                'M_FANS_RED_PACKET_URL',
            ],
            TimeOut: 0,
            Interval: 0,
            RunPanel: [0],
            Disable: false,
        },
    ],
    /* 监控列表 */
    ListenList: [
        {
            Name: 'Q',
            Id: '-1001871641367',
        },
        {
            Name: '备注2',
            Id: '-1001776658413',
        }
    ],

    //非静默触发消息多少秒撤回 0不撤回
    delMsgWaitTime: 10,
    //静默功能  默认false,会在监听到消息的地方回复监听结果 true则推送到静默推送设置的地方
    Taboo: true,
    TabooOriginalMsg: false /* 静默后推送的消息是否显示触发消息 */,
    //1 禁用任何日志输出 改为true后,不会向社交平台推送任何消息,且2 3开关失效 控制台除外
    DisableAllLogs: false,
    //2 禁用错误日志输出 改为true后,不会向社交平台推送任何错误消息 控制台除外
    DisableErrLogs: false,
    //3 禁用正常运行日志输出 改为true后,不会向社交平台推送任何任务运行成功的消息 控制台除外
    DisableRunLogs: false,
    //4 禁用控制台日志 改为true后,控制台不会显示任何消息
    DisableConsoleLog: false,
    //队列模式 1先进先出  2先进后出  其他值均视为 先进先出
    ListMode: 2,
    /* 运行日志输出位置,例如错误运行日志/任务运行成功等日志,只能设置1个 */
    runLogsInfo: {
        platform: 'tgBot', //发送平台
        toGroupOrUser: 'userId', //通知类型,个人userId //群groupId
        Id: '6028818745', //个人id 或群id
    },
    /* 静默后监控结果输出位置  可填多个*/
    TabooLogsInfo: [
        // 	{
        // 	platform: "qqBot",
        // 	toGroupOrUser: "userId",   //通知类型,个人userId //群groupId
        // 	Id: "528006323"
        // },
         {
             platform: 'tgBot', //发送平台
             toGroupOrUser: 'groupId', //通知类型,个人userId //群groupId
             Id: '', //个人id 或群id
         },
    ],
};


module.exports = {
    RspyList,
};

3.3.2 第三方插件

3.3.3 手动安装(可选)

使用wget或curl命令下载,以举牌插件为例,先创建红灯区目录,进入目录后shell下执行

wget https://github.com/RedLightsDistrict/Bncr_plugins/raw/main/举牌.js
wget https://raw.iqiq.io/RedLightsDistrict/Bncr_plugins/main/举牌.js

手动添加插件你需要同时拉取依赖文件,在 mod目录下,自行下载

3.3.4 更新插件

进入对应插件目录下执行

git pull

提示 Already up to date.即表示更新完成

如果你修改了插件,使用此方法可能会更新失败或者还原你的修改,此时再自己手动更新或者修改一遍

手动添加的插件直接覆盖即可

3.3.5 使用插件

打开插件,查看页眉就能看到插件使用方法,一般只需要了解 @rule 插件触发规则即可

比如 Bncr_ChatGPT.js 这个插件的 @rule^ai ([\s\S]+)$ ,触发规则就是匹配到 ai加一个空格加任意数量的字符串

部分插件需要先添加 token 才能使用,在插件里都有介绍,比如 Bncr_ChatGPT.js 这个插件就需要获取 openai 的 accessToken,给机器人发送

set ChatGPT Token <你的accessToken>

四 常见依赖

docker exec -it bncr /bin/sh

进入容器手动安装

npm i request crypto-js qrcode pngjs axios log4js ssh2 dayjs got jsdom base-64 date-fns ioredis

五 常见问题

5.1 鉴权异常

  • 目前可用URL

    • http://wj.yanyuwangluo.cn:1201
    • http://bncr.chaoyue.gq:2082
    • http://bncr.chaoyue.cf:2082
  • 管理员权限发命令来更换域名: set system ToverifyUrl xxx

  • 参考群公告1

  • 参考群公告2

5.2 链接解析问题

如果发现正常聊天不能发链接的可以尝试更新spy并且在spyconfig.js最上面加入下列代码

const RspyList = {
    /* 监控信息配置 */
    /* 自己发送url必须要带设置的值才会解析,  ''或者直接删除这一行为自动解析*/
    spyjx:'j',

加了jx后还是会出现无关链接被自动解析的现象

* @rule https:\/\/([A-Za-z0-9\-\._]+\.(isvjd|isvjcloud)\.com|(pages|shop\.m)\.jd\.com\/shop\/lottery|pro(dev)?\.m\.jd\.com\/mall|wqs\.jd\.com)[A-Za-z0-9\-\._~:\/\?#\[\]@!$&'\*\+,%;\=]*

规则替换成这个

5.3 更多

请参考 常见问题Q&A,或进官方群向大佬们友好提问

六 进阶使用

6.1 其它入门教程

  1. https://flowus.cn/share/20e855c0-ca05-4cc4-8128-d3e9707069bb
  2. https://www.kejiwanjia.com/?post_type=post&p=125849&post_type=post&viewtoken=d8e743fe921e22744ec8e77cb6d3d326
  3. https://docs.qq.com/doc/DTGNpdFVaS1Z6VHV4

6.2 更多

请参考官方文档和原作者教程。

七 交流

2
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
  3. QQ打赏

    qrcode qq

评论区