Skip to content

Instantly share code, notes, and snippets.

@lss233
Last active May 27, 2023 16:30
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save lss233/6f1af9510f47409e0d05276a3af816df to your computer and use it in GitHub Desktop.
Save lss233/6f1af9510f47409e0d05276a3af816df to your computer and use it in GitHub Desktop.
ChatGPT Mirai 快速部署脚本 for Linux
#!/bin/bash
# 安装路径
INSTALL_DIR=./chatgpt-qq
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
PLAIN='\033[0m'
DOCKER_COMPOSE_URL=https://github.com/docker/compose/releases/download/v2.14.0/docker-compose-`uname -s`-`uname -m`
echo -e "${GREEN}欢迎使用 chatgpt-mirai-qq-bot 一键部署脚本${PLAIN}"
echo -e "${GREEN}本程序将按照 wiki 步骤自动为您部署程序${PLAIN}"
echo -e "${GREEN}如果您遇到问题可以在这里寻找答案: ${PLAIN}"
echo -e "${YELLOW}https://github.com/lss233/chatgpt-mirai-qq-bot/issues/85${PLAIN}"
echo -e "${GREEN}如果您觉得此脚本对你有帮助的话,欢迎您在爱发电支持作者。${PLAIN}"
echo -e "${YELLOW}https://afdian.net/a/lss233${PLAIN}"
read -p "按下回车以继续……"
# Exit if any error occured
set -euo pipefail
if ! [ -x "$(command -v curl)" ]; then
echo -e "${RED}错误:${PLAIN} 未检测到 curl,请先安装此程序。"
fi
if ! [ -x "$(command -v docker)" ]; then
echo -e "${YELLOW}警告:${PLAIN} 未检测到 Docker。"
while true; do
read -p "是否自动为你安装?是则输入 Y 并回车,否则输入 N 并回车。 " yn
case $yn in
[Yy]* ) curl -fsSL https://get.docker.com -o get-docker.sh; sudo -E sh get-docker.sh; rm get-docker.sh; dockerd-rootless-setuptool.sh install; break;;
[Nn]* ) exit 1;;
* ) echo "请输入 y 或 n";;
esac
done
fi
if ! [ -x "$(command -v docker-compose)" ]; then
echo -e "${YELLOW}警告:${PLAIN} 未检测到 Docker Compose。"
while true; do
read -p "是否自动为你安装?是则输入 Y 并回车,否则输入 N 并回车。 " yn
case $yn in
[Yy]* ) sudo -E curl -L "${DOCKER_COMPOSE_URL}" -o /usr/local/bin/docker-compose; sudo -E chmod +x /usr/local/bin/docker-compose; break;;
[Nn]* ) exit 1;;
* ) echo "请输入 y 或 n";;
esac
done
fi
if [ -d $INSTALL_DIR ]; then
echo -e "${RED}错误:检测到本程序已安装在 $(realpath $INSTALL_DIR),无法重复安装。${PLAIN}"
echo -e "${GREEN}如果你想升级,请执行:${YELLOW}"
echo "cd $INSTALL_DIR"
echo "docker compose pull"
echo "docker compose up -d"
echo -e "${GREEN}如果你想重装,先删除此目录,并重新运行本程序:${PLAIN}"
exit 1
fi
ask_openai_session_token() {
echo -e "${GREEN}你可以在这里查看 session_token 的登录方法:${YELLOW}https://github.com/lss233/chatgpt-mirai-qq-bot/issues/96${PLAIN}"
read -p "请输入 OpenAI 的 session_token:" OPENAI_SESSION_TOKEN
}
ask_openai_email_password() {
read -p "请输入 OpenAI 的邮箱地址:" OPENAI_EMAIL
read -p "请输入 OpenAI 的密码:" OPENAI_PASSWORD
}
ask_qq() {
read -p "请输入 QQ 账号:" QQ_ACCOUNT
read -p "请输入 QQ 密码:" QQ_PASSWORD
}
download_files() {
echo -e "${GREEN}下载文件中,希望你的网络可以给力一点……${PLAIN}"
pushd $INSTALL_DIR
curl https://raw.githubusercontent.com/lss233/chatgpt-mirai-qq-bot/master/docker-compose.yaml -o docker-compose.yaml
curl https://raw.githubusercontent.com/lss233/chatgpt-mirai-qq-bot/master/config.example.cfg -o config.cfg
docker-compose pull
popd
}
configure_session_token() {
sed -i "s|# session_token = \"一串 ey 开头的东西\"|session_token = \"${OPENAI_SESSION_TOKEN}\"|g" $INSTALL_DIR/config.cfg
}
configure_email_password() {
sed -i "s|email = \"xxxx\"|email = \"${OPENAI_EMAIL}\"|g" $INSTALL_DIR/config.cfg
sed -i "s|password = \"xxx\"|password = \"${OPENAI_PASSWORD}\"|g" $INSTALL_DIR/config.cfg
}
configure_mirai() {
mkdir -p $INSTALL_DIR/mirai/config/net.mamoe.mirai-api-http/
mkdir -p $INSTALL_DIR/mirai/config/Console/
cat > $INSTALL_DIR/mirai/config/net.mamoe.mirai-api-http/setting.yml << EOF
adapters:
- http
- ws
debug: true
enableVerify: true
verifyKey: 1234567890
singleMode: false
cacheSize: 4096
persistenceFactory: 'built-in'
adapterSettings:
http:
host: mirai
port: 8080
cors: ["*"]
ws:
host: mirai
port: 8080
reservedSyncId: -1
EOF
cat > $INSTALL_DIR/mirai/config/Console/AutoLogin.yml << EOF
accounts:
- # 账号, 现只支持 QQ 数字账号
account: 123456
password:
# 密码种类, 可选 PLAIN 或 MD5
kind: PLAIN
# 密码内容, PLAIN 时为密码文本, MD5 时为 16 进制
value: pwd
# 账号配置. 可用配置列表 (注意大小写):
# "protocol": "ANDROID_PHONE" / "ANDROID_PAD" / "ANDROID_WATCH" / "MACOS" / "IPAD"
# "device": "device.json"
# "enable": true
# "heartbeatStrategy": "STAT_HB" / "REGISTER" / "NONE"
configuration:
protocol: ANDROID_PHONE
device: device.json
enable: true
- # 账号, 现只支持 QQ 数字账号
account: ${QQ_ACCOUNT}
password:
# 密码种类, 可选 PLAIN 或 MD5
kind: PLAIN
# 密码内容, PLAIN 时为密码文本, MD5 时为 16 进制
value: ${QQ_PASSWORD}
# 账号配置. 可用配置列表 (注意大小写):
# "protocol": "ANDROID_PHONE" / "ANDROID_PAD" / "ANDROID_WATCH" / "MACOS" / "IPAD"
# "device": "device.json"
# "enable": true
# "heartbeatStrategy": "STAT_HB" / "REGISTER" / "NONE"
configuration:
protocol: ANDROID_WATCH
device: device.json
enable: true
EOF
sed -i "s@http://localhost:8080@http://mirai:8080@g" $INSTALL_DIR/config.cfg
sed -i "s@请修改为你机器人的QQ号@${QQ_ACCOUNT}@g" $INSTALL_DIR/config.cfg
}
echo -e "${GREEN}请选择 OpenAI 的登录方式${PLAIN}"
echo "1) 邮箱密码登录"
echo "2) session_token 登录 (Google 登录或微软登录)"
while true; do
read -p "你的选择: " yn
case $yn in
1 ) TYPE=browser; ask_openai_email_password; break;;
2 ) TYPE=api; ask_openai_session_token; break;;
* ) echo "请输入对应的数字";;
esac
done
ask_qq
mkdir -p $INSTALL_DIR
download_files
case $TYPE in
api ) TYPE=api; configure_session_token;;
browser ) TYPE=browser; configure_email_password;;
esac
configure_mirai
cd $INSTALL_DIR
echo -e "${GREEN}接下来将要执行的是 Mirai 的初始化${PLAIN}" && sleep 5
echo -e "${GREEN}如果提示出现滑块验证码,请按照 https://github.com/lss233/chatgpt-mirai-qq-bot/issues/85 中的第一条进行处理。 ${PLAIN}" && sleep 5
echo -e "${GREEN}QQ 登录成功后,按下${YELLOW} Ctrl + C ${GREEN}结束初始化程序,进入最后一步。${PLAIN}" && sleep 5
echo -e "${GREEN}这可能需要一点时间,请稍等……${PLAIN}" && sleep 5
echo "+ docker-compose run --rm mirai"
docker-compose up -d
docker-compose run --rm mirai
echo -e "${GREEN}很棒!你已经完成了所有的初始化步骤。${PLAIN}"
echo -e "${GREEN}接下来为你启动程序……${PLAIN}"
echo "+ docker-compose up -d"
docker-compose up -d
echo -e "${GREEN}程序已被安装在 ${INSTALL_DIR} 下,${PLAIN}"
echo -e "${GREEN}以下是一些维护的注意事项:${PLAIN}" && sleep 5
echo -e "${GREEN}1. 你需要先 ${YELLOW}cd ${INSTALL_DIR} ${GREEN} 才能进入到程序的安装目录。${PLAIN}" && sleep 5
echo -e "${GREEN}2. 你可以输入${YELLOW}docker-compose logs -f ${GREEN}来观察运行日志。${PLAIN}" && sleep 5
echo -e "${GREEN}3. 如果你的 Mirai 需要验证码才能登录,使用 ${YELLOW}docker-compose run --rm mirai ${GREEN}启动登录程序,登录成功后按下${YELLOW} Ctrl + C ${GREEN}退出,然后重启程序。${PLAIN}" && sleep 5
echo -e "${GREEN}4. 修改配置文件后,使用 ${YELLOW}docker-compose restart ${GREEN}重启程序。${PLAIN}" && sleep 5
echo -e "${GREEN}5. 使用 ${YELLOW}docker-compose pull && docker-compose up -d ${GREEN}命令来更新程序${PLAIN}" && sleep 5
echo -e "${GREEN}如果你记不住的话,可以把上面这段文字保存到一个文件里面,需要的时候再看。${PLAIN}" && sleep 5
echo -e "${GREEN}如果您遇到问题可以在这里寻找答案: ${PLAIN}" && sleep 5
echo -e "${YELLOW}https://github.com/lss233/chatgpt-mirai-qq-bot/issues/85${PLAIN}" && sleep 5
echo -e "${GREEN}如果您觉得此脚本对你有帮助的话,欢迎您在爱发电支持作者。${PLAIN}"
echo -e "${YELLOW}https://afdian.net/a/lss233${PLAIN}"
echo -e "${GREEN}再见。${PLAIN}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment