qq机器人都是第三方的,官方不提供支持,很多消息第三方并不支持,有很多的局限性,当然最主要的原因还是不稳定,哪天就突然登不上qq了。而tg官方提供机器人api,这一点直接秒杀qq机器人了。于是把https://github.com/kukume/kukubot移植到了tgbot上面,并且增加了许多在qq上无法实现的功能。

数据库,我不喜欢自己建表,我喜欢自动建表的框架Hibernate,但是Spring并不支持响应式的Hibernate,于是选择了Mongodb

Githubhttps://github.com/kukume/tgbot

Demohttps://t.me/kukume_bot

哔哩哔哩、微博等动态推送,如果动态附带视频,则视频也会推送,但是视频大于50M,将只推送文字,如果需要视频大于50M也可以推送,请参考https://www.kuku.me/archives/41/自建api服务器,并把地址填写在配置文件中

功能

Demo自己看吧

部署

Docker部署

使用docker来部署,以Debian系系统为例,docker暂时在自定义api服务器不能使用GetFile函数,即机器人不能获取用户发送的文件。

安装docker

https://www.kuku.me/archives/45/

配置docker-compose.yml

新建一个文件,文件名为docker-compose.yml,其内容为

version: "3"
services:
  tgbot:
    image: kukume/tgbot
    container_name: tgbot
    ports: 
      - 8080:8080
    environment:
      # @BotFather获取到的token
      KUKU_TELEGRAM_TOKEN: 
      # 机器人管理员的id
      KUKU_TELEGRAM_CREATOR_ID: 0
      # 代理地址
      KUKU_TELEGRAM_PROXY_HOST:
      # 代理端口
      KUKU_TELEGRAM_PROXY_PORT: 0
      # 代理类型,可选 DIRECT(不设置代理)、HTTP、SOCKS
      KUKU_TELEGRAM_PROXY_TYPE: DIRECT
      # 自建的tg服务器的地址(包含http://或者https://),如果填了,
      # 上传文件到机器人的功能均会失效,如果不填,动态推送将不能推送50M以上的视频
      KUKU_TELEGRAM_URL:
    depends_on:
      - mongo

  mongo:
    image: mongo:4
    volumes:
      - ./db:/data/db
      - ./dump:/dump

在该yaml存在的目录下,db目录为mongodb的数据,备份只需备份这个文件夹即可。

启动

docker-compose的目录下

docker compose up -d

jar包部署

也是以debian为例,我不会用其他系统

某些视频推送使用了ffmpeg,所以你需要安装ffmpeg并配置环境变量,debian系统可以使用apt install ffmpeg -y来安装

安装mongodb

由于mongodb官方并不提供在arm架构上安装方式,所以均使用docker来安装

安装docker

https://www.kuku.me/archives/45/

配置docker-compose.yml
version: '3.1'

services:

  mongo:
    image: mongo:4
    container_name: mongodb
    restart: always
    
    ports: 
      - 27017:27017
    volumes:
      - ./db:/data/db
      - ./dump:/dump

其中,当前目录下的db文件夹是数据,dump目录是执行mongodumpmongorestore的备份与恢复文件夹

启动

docker-compose的目录下

docker compose up -d

以启动mongodb

下载程序包

程序包在https://pan.kuku.me/tgbot下,附带了jre21

配置文件

jar包同级目录新建一个application.yml文件,其配置以及说明如下

spring:
  ktor:
    # 消息自定义推送接口的端口号
    port: 8080
  data:
    mongodb:
      # mongodb的地址以及集合名
      uri: mongodb:localhost/tg
      auto-index-creation: true
  task:
    scheduling:
      pool:
        size: 10


kuku:
  telegram:
    # @BotFather获取到的token
    token:
    # 机器人管理员的id
    creatorId: 0
    # 代理地址
    proxyHost:
    # 代理端口
    proxyPort: 0
    # 代理类型,可选 DIRECT(不设置代理)、HTTP、SOCKS
    proxyType: DIRECT
    # 自建的api服务器的地址(包含http://或者https://),如果不填,动态推送将不能推送50M以上的视频
    url:
    # 填写自建api服务器的配置目录,该机器人程序和自建api必须在一台服务器上
    # 如果是https://www.kuku.me/archives/41/的搭建api,且docker-compose.yml在/root/telegram-bot-api目录下
    # 该参数为 /root/telegram-bot-api/data
    # 如果不是使用docker,该参数为 /
    localPath:

启动

./run.sh

更新

docker-compose.yml的目录下执行以下命令

# 停止并清除容器
docker compose down
# 删除镜像
docker rmi kukume/tgbot
# 启动
docker compose up -d

指令

1、在@BotFather发送/setcommands

2、选择自己的机器人

3、发送指令
这是我所设置的指令,你可以按照格式自行更改

login - 登录
manager - 管理
exec - 手动执行
delete - 删除登录的账号
update - 查看github提交记录
log - 查看自动签到日志
oci - Oracle Cloud管理
buff - 网易buff监控
uuyp - 悠悠有品监控
config - 用户配置
lolicon - lolicon图片
loliconmulti - 多张lolicon图片
push - 自定义消息推送
tool - 工具
ygo - 游戏王查卡

日志

有问题尽量提交日志。

机器人指令

  • /info可查看发送人的id ,把id设置到creatorId/setting中可下载日志
  • /log中可查看失败任务日志

日志文件

docker

docker-compose.yml存在的目录下,执行

docker compose logs > log.txt

log.txt为日志文件

Jar包

日志文件在tmp目录下

更新

/setting中可设置github提交推送,提交即docker镜像和jar包更新,可能不稳定。

docker更新

docker-compose.yml目录下

docker compose down
docker rmi kukume/tgbot
docker compose up -d

jar更新

停止程序,替换掉jar,重新启动

最后修改:2023 年 11 月 11 日
如果觉得我的文章对你有用,请随意赞赏