QQ群:323731210
TG交流群https://t.me/muzikeji
均可在线体验傻妞

此教程已不再适用,请点击蓝色字体参考:傻妞机器人新版安装教程新版教程

自用笔记分享,看了不懂的去看别人的吧,别说教程这了那了,求你看了还是你花钱订阅了?

本文由以下部分组成

  1. 基础环境构建。
  2. 傻妞机器人安装(只对接QQ)
  3. 傻妞常规设置
  4. 傻妞对接微信/公众号/TG机器人
  5. 傻妞重启以及更换机器人QQ
  6. 傻妞青龙扩展使用。
  7. 其他

一、基础环境构建go和git安装

go安装

(之前安装过的就不用再装了)
1.下载go安装包 ,这里我们安装到usr/local目录

cd /usr/local && wget https://golang.google.cn/dl/go1.16.7.linux-amd64.tar.gz -O go1.16.7.linux-amd64.tar.gz

2.解压安装包

tar -xvzf go1.16.7.linux-amd64.tar.gz

3.设置环境变量

vi /etc/profile 

最后新起一行填写下面代码。

export GO111MODULE=on
export GOPROXY=https://goproxy.cn
export GOROOT=/usr/local/go
export GOPATH=/usr/local/go/path
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

(1)编辑完后按 ESC键,按ESC只是让你退出编辑模式
(2)要想在退出编辑模式后使用保存退出命令,需要先使用按shift+:进入命令输入模式,然后输入 wq! 命令保存退出用命令修改
不会用命令的,用SFTP(不知道SFTP是什么的自行百度,还不知道的劝你别弄了打钱我给你弄吧) 连接服务器找到根目录/etc/profile文件打开,把上面代码复制粘贴到最后一行,保存效果一样的。

修改文件完成后执行

source /etc/profile ##在当前bash环境下读取并执行profile中的命令。

4.查看go安装是否完成,命令如下:

go env 

输出如图表示安装OK

go安装完成了

安装git

下面3个命令挨个跑完就好了

wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum install -y git

git安装完成了

二、傻妞安装

拉取机器人库

cd ~ && git clone https://ghproxy.com/https://github.com/cdle/sillyGirl

拉去京东组件扩展库

cd sillyGirl/develop && git clone https://ghproxy.com/https://github.com/ufuckee/jd_cookie

新建dev文件
在root/sillyGirl目录新建文件dev.go写入下面内容(包含QQ,微信,TG,公众号,青龙扩展,京东CK扩展)

package main

import (

//青龙2.9机器人
_"github.com/cdle/sillyGirl/develop/qinglong" 

//京东账号
_ "github.com/cdle/sillyGirl/develop/jd_cookie"

//腾讯QQ
_"github.com/cdle/sillyGirl/im/qq"

//Te Legram
_"github.com/cdle/sillyGirl/im/tg"

//微信公众号
_"github.com/cdle/sillyGirl/im/wxmp"

//微信号
_"github.com/cdle/sillyGirl/im/wx"
)

然后编译

cd && cd sillyGirl && go build  

启动

chmod 777 sillyGirl
./sillyGirl

等弹出二维码机器人QQ扫码绑定机器人
等到QQ登录完,按住ctrl再按c退出

然后静默挂机 执行下面代码

nohup ./sillyGirl 1>/dev/null 2>&1 & #AMD64

用机器人QQ给机器人自己发送一下内容设置你自己QQ为机器人管理员

set qq masters 你的QQ号

禁用机器人自己回复信息

set qq onself false

重启一下

现在可以去机器人玩了

三、傻妞常规设置

傻妞机器人名

set sillyGirl name 傻妞

傻妞http服务端口

set sillyGirl port 8080

傻妞消息撤回等待时间,单位秒

set sillyGirl duration 5

傻妞自动升级是否通知

set sillyGirl update_notify false

是否开启傻妞自动更新

set sillyGirl auto_update true

傻妞内置赞赏码

set sillyGirl appreciate https://gitee.com/aiancandle/sillyGirl/raw/main/appreciate.jpg

是否启动http服务

set sillyGirl enable_http_server false

设置青龙openapi的client_id参数

set qinglong client_id ?

设置青龙openapi的client_secret参数

set qinglong client_secret ?

青龙是否开启自动隐藏重复任务功能

set qinglong autoCronHideDuplicate true

设置青龙面板地址

set qinglong host http://127.0.0.1:5700

设置qq登录账号

set qq uin 10000

设置qq登录密码

set qq password 123456789

设置qq临时消息默认群号

set qq tempMessageGroupCode ?

指定要监听的qq群

set qq onGroups g1&g2&g3…

设置是否自动同意好友请求

set qq auto_friend false

设置是否对监听自身消息

set qq onself true

设置qq管理员

set qq masters q1&q2&q3…

设置接受通知的qq账号

set qq notifier q1&q2&q3…

设置qq设备信息(自动生成)

set qq device.json ?

设置qq登录令牌(自动生成)

set qq session.token ?

设置telegram机器人token

set tg token ?

设置telegram机器人代理

set tg http_proxy ?

设置telegram机器人管理员

set tg masters t1&t2&t3…

设置接受通知的telegram账号

set tg notifier t1&t2&t3…

设置微信公众平台app_id

set wxmp app_id ?

设置微信公众平台app_secret

set wxmp app_secret ?

设置微信公众平台token

set wxmp token ?

设置微信公众平台encoding_aes_key

set wxmp encoding_aes_key ?

设置微信公众平台管理员

set wxmp masters w1&w2&w3…

傻妞内置微信插件,依赖于可爱猫和http-sdk

傻妞远程处理接口 /wx/receive

设置插件调用地址,确保傻妞可以访问可爱猫端口

#set wx api_url ?

设置图片转发模式,否则可能会出现此图片来自xx未经允许不得使用的提示

#set wx relay_mode true

设置指定转发地址,格式为 https://域名/relay?url=%s,不知道不用填

#set wx relaier ?

设置动态网络地址,适用于傻妞家庭宽带而可爱猫在云服务器的情况下

set wx dynamic_ip true

获取群号 TG QQ 微信 通用

groupCode

获取自己ID TG QQ 微信 通用

myuid

获取上次编译时间

compiled_at

设置内置小爱API

set sillyGirl 小爱同学 http://jiuli.xiaoapi.cn/i/xiaoai_tts.php?msg=%s

小爱API返回词典中获取那个键的值

set sillyGirl 小爱同学gjson text

关键词撤回功能

set sillyGirl recall 关键词1&关键词2…

关键词回复功能

set reply 关键词[支持正则] 回复内容

四、傻妞对接微信、公众号、以及TG机器人

对接微信

对接微信(需要Windows服务器或者电脑)

1.首先加入QQ群323731210,下载群文件iHttp.cat.dll文件和可爱猫文件
2.将iHttp.cat.dll放入可爱猫app目录
3.运行可爱猫然后双击iHttp插件,如图。

4.在远程处理接口那里写上http://你的IP:傻妞端口/wx/receive
端口写80 后面的服务开关✓上。记录你的Windows主机外网IP以及你自己设置的端口,端口需要防火墙放行。如图

5.重启可爱猫,然后从可爱猫首页启动微信并登录。注意这个微信手机端不能退出,退出就掉线了。你可以找一个不用的手机登录你的微信机器人号码扫码,只要你不主动退出即使你的手机关机微信机器人也在线。

6.设置相关配置
设置插件调用地址,确保傻妞可以访问可爱猫端口
set wx api_url http://IP:端口

设置图片转发模式,否则可能会出现此图片来自xx未经允许不得使用的提示
set wx relay_mode true

设置指定转发地址,格式为
https://域名/relay?url=%s

set wx relaier ?

设置动态网络地址,适用于傻妞家庭宽带而可爱猫在云服务器的情况下
set wx dynamic_ip true

微信发送机器人myuid,获取你的微信ID

然后用下面命令设置自己为机器人管理员

set wx masters 你的微信ID

现在你的微信已经可以用了。

公众号对接教程

首先注册一个自己的公众号,有公众号的可以跳过。公众号注册应该都会就不讲了,不会的自己百度
然后查看自己公众号的app_id,app_secret(点击开发基础配置可以看到)。
接下来回到自己的QQ发送以下指令给机器人

set wxmp app_id 你的appid

set wxmp app_secret 你的appsecret

set wxmp encoding_aes_key 自定义key
由大小写字母和0-9组成的43位字符,可以在公众号后台随机生成

set wxmp token 自定义token

set sillyGirl port 80

set sillyGirl enable_http_server true

上面两个自定义的一定记牢下面要用,英文字母和数字组成。

然后登入你的公众号后台
1) 公众平台官网登录之后,找到“基本配置”菜单.

2) 填写配置
url填写:http://外网IP:端口/wx/ http的端口号固定使用80,不可填写其他。Token:你刚才自定义的token,这个token与公众平台wiki中常提的access_token不是一回事。这个token只用于验证开发者服务器。

选择明文模式,然后提交显示token验证成功就OK了。

需要注意的是你80端口没被其他服务占用,服务器装了宝塔安装了ningx的80端口肯定是占用了,如果你不用ningx可以在宝塔应用管理里卸载然后重启傻妞即可,要用或者其他程序占用了的自己百度方案解决吧。只要token验证成功就可以用了

然后启用服务 重启傻妞 就可以正常使用了

设置微信公众平台管理员

用微信发送 myuid

然后用QQ管理员发送机器人设置微信管理员

set wxmp masters 刚才查的uid

设置多个管理员

set wxmp masters uid1&uid2…

现在公众号可以使用傻妞功能了!

对接TG机器人

本方案原来是CloudFlare Worker反代Telegram的api.telegram.org。
1.首先注册CloudFlare账号,注册地址:cloudflare.com。注册账号非常的简单。不懂英文的现在浏览器都有翻译功能翻译后再去注册。
2.启用worker
登录cloudflare后,在左上角下拉菜单中找到 workers,入口:https://workers.cloudflare.com
然后自定义一个二级域名,记下来选择套餐选免费的就可以了。每天10万次请求够你玩了。

3.创建配置worker
进入cf的workers后台,点击 创建worker 按钮,新建一个worker。

然后进入worker编辑界面,输入下面代码后,点击安装部署。

const whitelist = ["/bot你的机器人ID:"];
const tg_host = "api.telegram.org";
addEventListener('fetch', event => {
    event.respondWith(handleRequest(event.request))
})
function validate(path) {
    for (var i = 0; i < whitelist.length; i++) {
        if (path.startsWith(whitelist[i]))
            return true;
    }
    return false;
}
async function handleRequest(request) {
    var u = new URL(request.url);
    u.host = tg_host;
    if (!validate(u.pathname))
        return new Response('Unauthorized', {
            status: 403
        });
    var req = new Request(u, {
        method: request.method,
        headers: request.headers,
        body: request.body
    });
    const result = await fetch(req);
    return result;
}

注:机器人ID就是机器人token前面的数字部分。不知道的可以TG @BotFather这个机器人可以获取你的机器人token。

现在你的机器人已经可以用了可以通过打开下面链接测试是否成功
https://xxxxx.xxx.workers.dev/bot机器人的token/sendMessage?chat_id=你的ID&text=发送的内容
机器人token获取方法上面说过了,你的ID获取方式 @userinfobot 找这个机器人可以拿到。
然后傻妞设置
set tg url https://xxx.xxx.workers.dev
xxx.xxx是你自定义的域名
set tg token xxxxx:xxxxxxxxxxxxx
后面x:xx是你的机器人token
现在你的TG机器人就可以用了。

或者直接用sock5代理

设置tg机器人token
set tg token xxxxx:xxxxxxxxxxx

设置sock5
set tg sock5 xxxxxxxx
(若有用户名和密码用@链接 set tg sock5 xxxxxxxxxx@xxx@xxx )

设置tg管理员
set tg masters xxxx

五、傻妞重启、更换机器人QQ、手动更新

重启

ps -A|grep sillyGirl ##显示进程号
kill -9 xxxxxx ##杀掉进程
cd && cd sillyGirl && ./sillyGirl  ##启动傻妞

等待数据库加载完成,按下curl 再按 C 退出
然后执行下面命令 静默挂机

nohup ./sillyGirl 1>/dev/null 2>&1 & #AMD64

./sillyGirl -d

不出错就重启OK了,出错的话看执行日志对症下药!

更换机器人QQ

首先确保傻妞是新版不是老古董,用下面命令注销现有QQ

delete qq session.token

然后重新启动傻妞

cd && cd sillyGirl && ./sillyGirl  ##启动傻妞

等待弹出二维码用准备更换的新QQ扫码
等待登录成功,然后按住curl 再按下 C 退出
然后执行下面命令静默挂机。

nohup ./sillyGirl 1>/dev/null 2>&1 & #AMD64

./sillyGirl -d

现在就更换到了新的号码,注意之前的设置是不会丢的不用一一重新设置。

手动更新

手动更新只需要执行下面命令

cd && cd sillyGirl && git stash && git pull && go build && ./sillyGirl -d

QQ发升级出现

解决方案如下:找到/root/sillyGirl/.git/config文件
在文件最后一行加上两行代码

[user]
       email = xxx@qq.com #自己的邮箱或者随意
       name = 爱的味道 #随意昵称

保存一下就可以了,不行重启再试!

六、傻妞青龙扩展使用

首先你得有青龙,不会装青龙的自行搜索教程或者加我QQ群16319366发送【教程】可查看系列教程。
有了青龙然后你可以对接傻妞进行交互。(注意傻妞只支持青龙2.9+)
1.创建青龙应用

然后复制你的应用信息对接傻妞

设置青龙open api id
set qinglong client_id 青龙应用ID

设置青龙open api 密码
set qinglong client_secret 青龙应用secret(密钥)

设置青龙登录地址
set qinglong host http://IP:端口号
例如:set qinglong host http://123.1.2.123:5700

如果各种信息都正确就配置OK了,需要注意的是青龙如果是2.8升级的会出现报错。重启容器即可

docker restart 你的容器名  

2.青龙常用交互命令
拉去脚本
ql raw 脚本地址

查询COOKIE状态
ql cookie status

指定CK运行脚本
ql task 任务文件名 desi JD_COOKIE 指定的CK编号(如1 1-2 等等)

CK优先级
jd exchange ? ?

CK备注
jd remark ? ?

[修改QQ、Cookie绑定关系]
删除Cookie对应QQ号关系[只需要改pt_pin为你要改的pin]
delete pinQQ pt_pin

绑定Cookie对应QQ关系 [改pt_pin为你要改的pin qq号为需要绑定QQ号]
set pinQQ pt_pin qq号

解除指定账号关联的一切账号
jd unbind im 账号

青龙关闭自动隐藏任务命令
set qinglong autoCronHideDuplicate false
默认开启。

^ql\s+crons$
ql crons #获取所有青龙任务

^ql\s+cron\s+status\s+(\S+)$
ql cron starts 任务名 #查看该任务状态

^ql\s+cron\s+run\s+(\S+)$
ql cron run 任务名 #运行该任务

^ql\s+cron\s+stop\s+(\S+)$
ql cron stop 任务名 #停止该任务

^ql\s+cron\s+enable\s+(\S+)$
ql cron enable 任务名 #启用该任务

^ql\s+cron\s+disable\s+(\S+)$
ql cron disable 任务名 #禁用该任务

^ql\s+cron\s+find\s+(\S+)$
ql cron find 任务名 #查找该任务

^ql\s+cron\s+logs\s+(\S+)$
ql cron logs 任务名 #查看该任务日志

^ql\s+update$
ql update #升级青龙面板

^ql\s+update\s+logs$
ql update logs #查看青龙面板升级日志

^ql\s+cron\s+hide\s+duplicate$
ql cron hide duplicate #删除重复任务

ql\s+config$
ql config #查看青龙配置文件 QQ字数限制所以用不了

^ql\s+envs$
ql envs #查看青龙已有变量不含CK

^ql\s+env\s+get\s+(\S+)$
ql env get 变量名 #获取变量信息包含名称/状态和值

^ql\s+env\s+find\s+(\S+)$
ql env find 变量名 #用于查询是否已设置此变量

^ql\s+env\s+set\s+(\S+)\s+(\S+)$
ql env set 变量名 变量值 #设置新的变量

^ql\s+env\s+remark\s+(\S+)\s+(\S+)$
ql env remark 变量名 备注 #设置变量备注

^ql\s+env\s+disable\s+(\S+)$
ql env disable 变量名 #禁用变量

^ql\s+env\s+enable\s+(\S+)$
ql env enable 变量名 #启用变量

如果还有其他的可以在评论补充。

七、其他

傻妞功能较为广泛,可以指定义在conf/config.yaml中添加API配置,也可以自己写脚本放到develop/replies目录里。
API配置样板文件如下:

replies:
  #文本类型的回复
  - type: text
    rules:
      - 在吗
    content: 我是花猫,欢迎来撩,可以发送功能查看我能做什么,喵喵喵!
  #链接类型回复
  - type: url
    rules:
      - 壁纸
      - 二次元
    request:
        #图片
        response_type: image 
        url: https://acg.toubiec.cn/random.php
  - type: url
    rules:
      - 姐姐
      - 妹妹
      - 小姐姐
    request:
        #图片
        response_type: image 
        url: http://api.btstu.cn/sjbz/zsy.php
  - type: url
    rules:
      - 舔狗日记
      - 舔狗
    request:
        #纯文本
        response_type: text
        url: https://api.oick.cn/dog/api.php
  - type: url
      - 股票 (.*)
    request:
        #纯文本
        response_type: text
        url: https://zyzcfa.com:444/api/stocks?keyword={{1}}
  - type: url
    rules:
      - 蓝奏云 (.*) (.*)
      - 蓝奏云 (.*)
      - 蓝奏云 (.*)密码:(.*)
    request:
        #纯文本
        response_type: json
        url: http://yingy.20wl.co/Api/php/LanZous.php?url={{1}}&pwd={{2}}
        get: data.url
  - type: url
    rules:
      - 游戏
      - 开始游戏
    request:
        #纯文本
        response_type: text
        url: http://hm.suol.cc/API/game_gs.php?msg=开始游戏
  - type: url
    rules:
      - 答 (.*)
      - 答(.*)
    request:
        #纯文本
        response_type: text
        url: http://hm.suol.cc/API/game_gs.php?msg=答{{1}}
  - type: url
    rules:
      - 提示
    request:
        #纯文本
        response_type: text
        url: http://hm.suol.cc/API/game_gs.php?msg=提示
  - type: url
    rules:
      - ^查字\s*(\S*)$
    replace:
      - 
        - <br>

        - "\n" 
    request:
        response_type: template
        url: https://api.tianapi.com/txapi/xhzd/index?key=19eea766886493ecd04e770d0c2b56f9&word={{1}}
        template: "汉字:gjson(newslist.[0].hanzi)\n读音:gjson(newslist.[0].pyyb)\n解释:gjson(newslist.[0].content)\n拓展:gjson(newslist.[0].explain)"    
  # - type: url
  #   rules:
  #     - .*
  #   request:
  #       #纯文本
  #       response_type: json
  #       url: https://api.ixiaowai.cn/tgrj/index.php
  #       get: data.msg

定时推送js样例文件

// [rule: ^每日热点$ ]
// [cron: 0 6 * * * ]
// [admin: true ]

var data = request({
  "url": "https://api.tianapi.com/txapi/wxhottopic/index?key=" + get("tianapi_key"), // set otto tianapi_key ?
  "dataType": "json"
})
var newslist = ["每日热点:"];
var content = "";
var messages = eval('(' + get("hottopic") + ')'); // set otto hottopic [{imType:"qq",groupCode:16319366}]
if (data && data.newslist) {
  hots = data.newslist.reverse()
  for (var i = 0; i < hots.length; i++) {
      newslist.push((i + 1) + ". " + hots[i].word)
  }
  content = newslist.join("\n")
} else {
  content = "每日热点," + data
}
for (var i = 0; i < messages.length; i++) {
  message = messages[i]
  message["content"] = content
  push(message)
}
sendText("操作成功。")

其他待补充,就到这吧!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐