跳转至

关于

# KurumiBot _✨ 一款为芳文党服务的胡桃同学! ✨_

此项目基于 [Nonebot2](https://github.com/nonebot/nonebot2) 和 [go-cqhttp](https://github.com/Mrs4s/go-cqhttp) 开发,一款有一些插件的QQ群娱乐机器人 (此项目定位为个人Bot,可能不会进行长期维护/进行错误修复!)

💭About

用爱发电,某些功能学习借鉴了大佬们的代码,并且引用了一些插件后进行个性化的修改,因为本人为胡桃同学力推人因此开发了KurumiBot,实现了一些对群友的娱乐功能/实用功能/芳文社相关功能(大概)。

🔨功能图

qwq

📣声明

此项目仅用于学习交流,请勿用于非法用途

此项目均为开源代码,在正常情况下除非引用代码的仓库另有许可证,所有代码均使用GPL v3

💡简单部署

1.配置gocq

go-cqhttp仓库 下载Releases最新版本,运行后选择反向WS,然后打开go-cqhttp生成的 config.yml在对应地方填写 ws://127.0.0.1:8531/onebot/v11/ws

比如go-cqhttp生成的 config.yml中对应的地方填写应该这样

  - ws-reverse:
      # 反向WS Universal 地址
      # 注意 设置了此项地址后下面两项将会被忽略
      universal: ws://127.0.0.1:8531/onebot/v11/ws #这里需要更改!
      # 反向WS API 地址
      api: ws://your_websocket_api.server
      # 反向WS Event 地址
      event: ws://your_websocket_event.server
      # 重连间隔 单位毫秒
      reconnect-interval: 3000
      middlewares:
        <<: *default # 引用默认中间件

2.配置KurumiBot

首先先获取本仓库文档,您可以下载zip或者 git clone https://github.com/misaka10843/KurumiBot.git

如果您是下载的 zip,请解压后 cd KurumiBot-main

如果您是 git clone,请允许 cd KurumiBot

然后新建 .env文件,将 .env.dev的内容复制到 .env后按照对应的注解进行配置

请注意,默认情况下,请不要修改以下的内容,如需修改,请连同修改go-cqhttp的 config.yml中的反向WS地址

################
#ws配置
################

HOST=127.0.0.1
PORT=8531

3.启动对应端

首先,我们启动go-cqhttp

切换到go-cqhttp的文件夹,输入 ./go-cqhttp,然后将进程挂起即可

(Linux可以使用 Screen来进行挂起)

然后,我们启动KurumiBot

请注意,在进行接下来的过程前,请注意您的python必须大于等于3.8

强烈建议您使用虚拟环境安装依赖和运行,不会创建虚拟环境可以去看 virtualenv 文档,看不懂英语的可以去看廖雪峰教程

首先,切换到KurumiBot文件夹,然后输入 pip install -r ./requirements.txt来安装依赖

(PS:因为某些原因,可能在启动时会提示缺少依赖,还请暂时先一个一个安装,之后会将所有依赖重新输入进requirements)

然后输入 python bot.py来启动Bot后,挂起进程即可

🔗引用插件

其他未列出的插件因为并未做出修改,所以您可以直接在 plugins.json中查看

📋预置数据

为了您更好的体验,我们预置了一些数据

其中,有些数据可能需要您的更改,有些数据可能尽量不要修改

需要修改的文件如下:

W1:data\RSS\rss.json

W2:data\word_bank\bank.json

❓常见问题

Q1:在Windows中停止机器人会报错

01-17 12:57:10 [ERROR] apscheduler | Job "dy_sched (trigger: date[2023-01-17 12:57:09 CST], next run at: 2023-01-17 12:57:09 CST)" raised an exception
Traceback (most recent call last):
  File "bot.py", line 19, in <module>
    nonebot.run()
  File "D:\Users\misaka10843\Documents\GitHub\KurumiBot\.venv\lib\site-packages\nonebot\__init__.py", line 273, in run
    get_driver().run(*args, **kwargs)
  File "D:\Users\misaka10843\Documents\GitHub\KurumiBot\.venv\lib\site-packages\nonebot\drivers\fastapi.py", line 172, in run
    uvicorn.run(
  File "D:\Users\misaka10843\Documents\GitHub\KurumiBot\.venv\lib\site-packages\uvicorn\main.py", line 569, in run
    server.run()
  File "D:\Users\misaka10843\Documents\GitHub\KurumiBot\.venv\lib\site-packages\uvicorn\server.py", line 60, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "d:\pl\python\python38\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "d:\pl\python\python38\lib\asyncio\base_events.py", line 603, in run_until_complete
    self.run_forever()
  File "d:\pl\python\python38\lib\asyncio\windows_events.py", line 316, in run_forever
    super().run_forever()
  File "d:\pl\python\python38\lib\asyncio\base_events.py", line 570, in run_forever
    self._run_once()
  File "d:\pl\python\python38\lib\asyncio\base_events.py", line 1859, in _run_once
    handle._run()
  File "d:\pl\python\python38\lib\asyncio\events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
> File "D:\Users\misaka10843\Documents\GitHub\KurumiBot\.venv\lib\site-packages\apscheduler\executors\base_py3.py", line 30, in run_coroutine_job
    retval = await job.func(*job.args, **job.kwargs)
  File "D:\Users\misaka10843\Documents\GitHub\KurumiBot\.venv\lib\site-packages\haruka_bot\plugins\pusher\dynamic_pusher.py", line 38, in dy_sched
    await grpc_get_user_dynamics(
  File "D:\Users\misaka10843\Documents\GitHub\KurumiBot\.venv\lib\site-packages\bilireq\grpc\utils\__init__.py", line 48, in
 wrapper
    result = await func(
  File "D:\Users\misaka10843\Documents\GitHub\KurumiBot\.venv\lib\site-packages\bilireq\grpc\dynamic\__init__.py", line 20, in grpc_get_user_dynamics
    return await stub.DynSpace(req, **kwargs)
  File "D:\Users\misaka10843\Documents\GitHub\KurumiBot\.venv\lib\site-packages\grpc\aio\_call.py", line 271, in __await__
    response = yield from self._call_response
asyncio.exceptions.CancelledError
01-17 12:57:10 [INFO] uvicorn | Application shutdown complete.
01-17 12:57:10 [INFO] uvicorn | Finished server process [1016]

如果是上面这种报错,均为正常情况,详细可以查看NoneBot文档