关于
💭About¶
用爱发电,某些功能学习借鉴了大佬们的代码,并且引用了一些插件后进行个性化的修改,因为本人为胡桃同学力推人因此开发了KurumiBot,实现了一些对群友的娱乐功能/实用功能/芳文社相关功能(大概)。
🔨功能图¶
📣声明¶
此项目仅用于学习交流,请勿用于非法用途
此项目均为开源代码,在正常情况下除非引用代码的仓库另有许可证,所有代码均使用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后,挂起进程即可
🔗引用插件¶
- bilibili视频、番剧解析
- HarukaBot(bili动态)
- HikariSearch
- 无数据库的问答插件
- nonebot-twitter(并未测试)
- ELF_RSS(Twitter及其他RSS源的转发动态)
其他未列出的插件因为并未做出修改,所以您可以直接在 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文档