【Python】教你白嫖replit部署kook-ticket-bot
慕雪年华

教你白嫖replit部署kook的ticket机器人

1.前言

最近有不少老哥来找我咨询有关ticket机器人的事情,当前ticket机器人需要云服务器才能部署,有些不太友好(要钱啊!而且也不是人人都会安装python环境)

所以在这里利用replituptimerobot两个平台,给大家介绍一个白嫖的方法,实现部署kook-ticket-bot

注意!replit上的免费仓库,默认是公开的,也就是所有人都能访问到你这个仓库里面的文件,包括bot的token和日志信息!若您的ticket-bot对数据私密性要求较高,请自购服务器或找开发者代为部署!

2.准备

2.1 注册账户

这两个平台国内访问缓慢,如果实在进不去,就下载一个steam++(又称watt toolkit)

https://gitee.com/rmbgame/SteamTools/releases/tag/2.8.6

如图,下载exe就可以了

image

安装打开以后,把这一堆无差别勾上,点一键加速,应该就ok了,访问会稍微快一点

image

随后就是注册这两个平台的账户了,应该不需要教吧(doge)

2.2 打开gitee仓库

https://gitee.com/musnow/Kook-Ticket-Bot/tree/main/code

为了方便访问,我将ticket-bot在gitee也传了一份,大家打开仓库的code目录,准备拷贝代码

2.3 申请kook开发者

https://developer.kookapp.cn/app/index

到kook的开发者平台,加入官方频道申请承为开发者,获取创建bot的权限;有了权限之后,新建一个应用

image

image

随后进入机器人页面,复制这里的token,先保存起来,后面要用(一会再来复制也行)

image

进入邀请页面,给予机器人管理员权限(这样是为了方便,不然得钩一大堆)

然后复制上面的邀请链接到浏览器,邀请机器人进入你的服务器

image

image

3.开始部署

3.1 创建python

来到replit,创建仓库

image

选择python,然后给它取个名字。

这一步可以选择右上角的从github import,复制我仓库的git连接就可以了。

1
https://github.com/musnows/Kook-Ticket-Bot.git

github import之后,可以跳过添加代码文件这一步,但依旧需要手动添加配置文件。

image

创建之后进入这个项目

image

3.2 添加代码文件

进来之后是这样的页面,只有一个main.py,其他什么都无

image

点击左上角这个小按钮,创建一个新文件,命名为keepal.py

image

复制如下代码到keepal.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# encoding: utf-8

from flask import Flask
from threading import Thread
# 初始化
app = Flask(' ')
# 设立根路径作为api调用
@app.route('/')
def home():
text = "ticket bot online!"
print(text)
return text
# 开始运行,绑定ip和端口
def run():
app.run(host='0.0.0.0',port = 8000)
# 通过线程运行
def keep_alive():
t= Thread(target=run)
t.start()

随后,就开始根据我仓库的代码,创建同名文件,并将代码复制进去

github的代码更加新,如果能打开github,请在github复制代码:https://github.com/musnows/Kook-Ticket-Bot

实在打不开,再来gitee:https://gitee.com/musnow/Kook-Ticket-Bot/tree/main/code

main就不用创建了,默认已经有了,直接把代码复制进去就行了;所有文件添加完毕之后,应该是下面这样的

image

这样,代码就添加好了

3.3 添加配置文件

新版本的ticket机器人会自动创建log目录下的文件,但是config下的配置文件依旧需要您手动操作!

接下来就是更具仓库的README添加各类配置文件

1
2
3
4
5
6
config/config.json #机器人token配置
config/TicketConf.json # ticket配置
# 下面几个可以不弄
log/TicketLog.json #ticket日志
log/TicketMsgLog.json # 消息记录
log/ColorID.json # 表情回应上角色

先把如上的几个文件全部建立好,然后根据仓库的README往里面添加键值,这里不重复README中已有内容

很多操作都需要复制ID,先在设置高级设置中开启开发者模式

image

下面给出一个TicketConf.json中需要配置的几项的样例

image

image

在这里重申,添加了这两个角色id之后,必须要给予用户对应的角色(特别是腐竹)才能操作bot的命令,否则提示权限不足

配置为文件添加完毕之后,应该是下面这样的

image

3.4 开始运行

开始运行前的最后一步,进入main.py,取消对最后两行代码的注释

image

这个时候就可以点击顶部的run,尝试运行bot了,变成下面的样子那就是在运行了

image

刚开始打印会提示这个,代表没有找到对应的包

image

工具tools里面选择packges,在里面搜索khl.py

image

image

如下提示,安装成功!

image

在点击运行,出现如图所示的页面,那就是运行成功了!

image

现在进kook里面,先测试一下我们的bot是否在线

image

测试通过!后台也打印出了日志

image

3.5 uptimeRobot

别急别急,虽然到这里已经ok了,但我们还有一个步骤要做

进入uptimeRobot,需要创建一个监控实例,来调用我们的keepal模组中的函数,保证我们的bot不会因为replit的策略而下线

image

点击add new monitor,选择http

image

image

按如下所示填写

  • name随便填个英文名
  • url填在replit复制的链接
  • intervel是单次监控的间隔,选择1-5分钟都可以
  • timeout默认30s不需要修改
  • 两个ssl取消勾选

image

建议勾选上这个,在bot下线的时候,会向你的邮箱发送通知

image

配置完毕,点击右下角的create

image

这时候就会开始运行了!下方的pause可以暂停运行。

image

如果你create完毕,发现是黑色的,那就点击一下start让他开始运行

4.日志文件

默认的所有打印都会打印到控制台里面,运行时间久了,replit的控制台可能无法获取到所有信息。所以我们需要对输出进行重定向

如果你需要日志文件(我建议一定要这么做!)那就需在main里面添加一部分代码

1
2
3
4
#标准输出重定向至文件
file = open('./log/log.txt', 'a')
sys.stdout = file
sys.stderr = file

添加到开头start_time以后即可

image

现在更新了代码以后,只需要取消开头这里的注释即可

1
2
# 标准输出重定向至文件
logDup('./log/log.txt')

image

这样做还不够,bot有一个特殊的kill命令,执行此kill命令,可以刷新缓冲区,避免出现数据在缓冲区中没有写入到文件,导致丢失日志

如果你想退出bot,建议使用kill命令来操作

大功告成!

现在你可以根据help去测试一下各类命令是否能正常工作啦

image

image

image

注意,关闭ticket之后可能会出现这个报错,这是因为用户从来没有给bot发送过信息,导致bot无法用户发送私信,忽略此报错即可(新版本已经取消了这个报错)

image

因为replit是免费的,所以bot的反应可能有些迟钝,正常情况!

再次提醒!replit上的免费仓库,默认是公开的,也就是所有人都能访问到你这个仓库里面的文件,包括bot的token和日志信息!若您的ticket-bot对数据私密性要求较高,请自购服务器或找开发者代为部署!

你可以fork我这次部署的bot(23-02-10)但是后续的代码更新还是需要自己操作哦!