一个粉丝的自我修养
1. 摘要
这篇文章主要是教铁粉在粉丝群里面布置一个主播(UP主)动态变化的QQ聊天机器人。目前使用 【插件】支持B站直播提醒,B站动态提醒,手把手教学配置。这篇文章同样给大家一个视角,没有钱的粉丝可以给你的爱豆做什么?答案是帮她做「用户拉活」,解放爱豆忘记开播提醒的烦恼。
关键词: bilibili, B站UP主,QQ聊天机器人,B站开播提醒QQ机器人,粉丝的自我修养。
2.1 作为一个粉丝能为爱豆做什么
作为一个一无是处,也没有办法给爱豆刷火箭、充舰长的普通粉丝,能为你的爱豆做什么?
1.1 刷数据
作为一个idol,她(他)需要的是曝光。需要积累更多的人气,那么在视频推荐里面完播率、转发率、弹幕、收藏、回播等信息都是一些非常重要的参考因素,因此如果你没有钱,你可以多看看idol的视频。这样对于视频网站也来,也不算是作弊,因为你本来就是喜欢这个视频,希望给idol的视频带来更大的曝光量。
1.2 用户拉活
「用户拉活」是指提高用户活跃度的意思。和它相关还有「用户拉新」,也就是增加新的用户。只要对于一个稍微有一点点名字的UP主、主播或者各类大V,都会有自己的宣传渠道,形成自己的「私域流量」,包括但不限于微信群、QQ群、公众号、抖音号等。那么显然,很多粉丝都会选择去加相应的粉丝群,但是如果不是铁粉,那么也不一定会开直播/动态提醒。那么我们就需要通过各种渠道就告诉这些「粉丝」(伪粉),你曾经喜欢的UP主开播了。那么显然会存在一部分粉丝收到提醒后就会去看直播,刷礼物,点赞相关动态。那么这种行为就是一种「用户拉活」,可以让一部分粉丝重新变得活跃起来。如果你的「私域流量」足够大,那么这种用户拉活的效果是非常显著的,可能马上就有人来给你喜欢的UP新发的动态点赞、刚开的直播刷舰长。
1.3 QQ群开播提醒机器人
为了实现某种程度上的用户拉活,这里我是想给「UP主:大豆壳子」 的粉丝群提供一个开播自动提醒的机器人,那么她的粉丝(当然主要是我),就会收到相应的提醒。这样我就可以替她挂机刷人气(原谅我并不一定有时间看)。而刚好想到 7sDream 以前就为他最喜欢的「Vtuber 阿夸」的粉丝群写了一个开播自动提醒的QQ聊天机器人。因此秉行着拿来主义(实际上是我不会写),我们直接用 7sDream写好的开源插件 Bilibili Activity Monitor 跟踪哔哩哔哩UP主的最近动态。目前只有两个功能:一个是直播提醒,一个是动态提醒。
3. 部署自动提醒机器人
目前7sDream写了一个插件可以实现这个功能,所以我们需要做的就需要把它部署起来。
3.1 开发部署环境
- 一个QQ小号(万一腾讯把你封了可以换一个)
- 一台服务器(当然你要是有一个一会断电断网的普通电脑也可以)
3.2 简单知识解释
如果你是一个开发者,我建议你先看 nonebolt https://v2.nonebot.dev/ 理解它们之间的关系。
简单介绍: nonebot 相当于是一个消息处理中心,收到QQ里面传过来的消息,进行命令解析,选择相应的插件处理。 cqhttp服务则是一个和腾讯服务器连接的桥梁,通过反向订阅nonebot服务,把QQ里面收到的消息发送给 nonebot,然后nonebot服务再去解析消息,选择相应的插件处理。因此部署一个QQ机器人需要两个服务,一个是 cqhttp服务和nonebot 服务。(所以只看 7sdream的插件是部署不起来的)
3.3 部署步骤
下面一共9步,手把手实现自动提醒机器人。
(1). 登录你的服务器,为你喜欢的UP主新建一个目录,这里我使用 mkdir dadou
and cd dadou
dadou 是 xx up的名字。(我似乎在变相宣传???)
(2). 安装Python3.9 conda create -n dadou python=3.9 pip
和激活环境 conda activate dadou
为了方便管理,我使用 conda 进行 python版本控制,这里你也可以使用 pipenv、poetry等方式。安装3.9 是因为这个包只支持 3.9。
(3). 安装B站动态提醒插件 bilibili activity monitor. 参考 https://github.com/7sDream/nonebot-plugin-bam里面的readme。 这里注意,7sDream 使用的 poetry 进行包和环境的管理,但是我从来没有用过,因此选择了常见的 pip
安装方式。 pip install nonebot-plugin-bam
需要注意的坑:这里 7牛只提供了 3.9 的安装支持,因此你需要使用 python 3.9。
(4). 安装 nonebot pip install nonebot2==2.0.0a10
因为nonebot2 和 nonebot 是不兼容的,因此我们需要安装 nonebot2。 另外为什么要制定版本,因为 最近版本的 log 以及 adapter等功能分出去了,7sDream暂时还没有支持新版本。
(5). 降级pydantic 使用 pip install pydantic==1.7.3
如果不降级 pydantic到这个版本,会出现如下错误。(希望你跟着一步一步坐下来,就不好出现下面这个错误了)
(6). 启用 cqhttp服务 地址:https://v2.nonebot.dev/guide/cqhttp-guide.html 这是用来和腾讯QQ服务器通信的 服务器,所以需要先下载 go-cqhttp,然后运行它。(运行方式在上面的链接中有写)
这里以 go-cqhttp (opens new window)为例:
(1). 下载 go-cqhttp 对应平台的 release 文件,点此前往(opens new window)
(2). 运行 exe 文件或者使用 ./go-cqhttp 启动
(3). 生成默认配置文件并修改默认配置
其中运行第2步的时候会产生一个 config.hjson
的文件,我们需要对文件作出修改。
/*
go-cqhttp 默认配置文件
*/
{
// QQ号
uin: 你的QQ号
// QQ密码,把下面密码换成正确的密码
password: "1235678"
// 是否启用密码加密
encrypt_password: false
// 加密后的密码, 如未启用密码加密将为空, 请勿随意修改.
password_encrypted: ""
// 是否启用内置数据库
// 启用将会增加10-20MB的内存占用和一定的磁盘空间
// 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能
enable_db: true
// 访问密钥, 强烈推荐在公网的服务器设置
access_token: ""
// 重连设置
relogin: {
// 是否启用自动重连
// 如不启用掉线后将不会自动重连
enabled: true
// 重连延迟, 单位秒
relogin_delay: 3
// 最大重连次数, 0为无限制
max_relogin_times: 0
}
// API限速设置
// 该设置为全局生效
// 原 cqhttp 虽然启用了 rate_limit 后缀, 但是基本没插件适配
// 目前该限速设置为令牌桶算法, 请参考:
// https://baike.baidu.com/item/%E4%BB%A4%E7%89%8C%E6%A1%B6%E7%AE%97%E6%B3%95/6597000?fr=aladdin
_rate_limit: {
// 是否启用限速
enabled: false
// 令牌回复频率, 单位秒
frequency: 1
// 令牌桶大小
bucket_size: 1
}
// 是否忽略无效的CQ码
// 如果为假将原样发送
ignore_invalid_cqcode: false
// 是否强制分片发送消息
// 分片发送将会带来更快的速度
// 但是兼容性会有些问题
force_fragmented: false
// 心跳频率, 单位秒
// -1 为关闭心跳
heartbeat_interval: 0
// HTTP设置
http_config: {
// 是否启用正向HTTP服务器
enabled: true
// 服务端监听地址
host: 0.0.0.0
// 服务端监听端口
port: 5700
// 反向HTTP超时时间, 单位秒
// 最小值为5,小于5将会忽略本项设置
timeout: 0
// 反向HTTP POST地址列表
// 格式:
// {
// 地址: secret
// }
post_urls: {}
}
// 正向WS设置 不需要,只要有反向配置就行了。
// 反向WS设置
ws_reverse_servers: [
// 可以添加多个反向WS推送
{
// 是否启用该推送
enabled: true
// 反向WS Universal 地址
// 注意 设置了此项地址后下面两项将会被忽略
// 留空请使用 ""
reverse_url: ws://127.0.0.1:8080/cqhttp/ws
// 反向WS API 地址
reverse_api_url: "" //ws://you_websocket_api.server
// 反向WS Event 地址
reverse_event_url: "" // ws://you_websocket_event.server
// 重连间隔 单位毫秒
reverse_reconnect_interval: 3000
}
]
// 上报数据类型
// 可选: string array
post_message_format: string
// 是否使用服务器下发的新地址进行重连
// 注意, 此设置可能导致在海外服务器上连接情况更差
use_sso_address: false
// 是否启用 DEBUG
debug: false
// 日志等级 trace,debug,info,warn,error
log_level: "info"
// WebUi 设置
web_ui: {
// 是否启用 WebUi
enabled: true
// 监听地址
host: 127.0.0.1
// 监听端口
web_ui_port: 9999
// 是否接收来自web的输入
web_input: false
}
}
再次 运行 ./go-cqhttp
这里一定会出现一个问题。运行滑块,填写需要的 cookies。这里只要按照提示,根据文档操作很好理解,不做过多介绍。
运行成功出现:(如果是第一次登陆,界面是不一样的,第一次登陆的时候是教你怎么把QQ用 cqhttp登上去。)
(7). 运行 nonebot 代码
新建文件 run.py
,内容如下:
import nonebot
from nonebot.adapters.cqhttp import Bot as CQHTTPBot
nonebot.init(_env_file=".env")
driver = nonebot.get_driver()
driver.register_adapter("cqhttp", CQHTTPBot)
nonebot.load_builtin_plugins()
# load other plugins
# bam need this to manage background tasks
nonebot.load_plugin("nonebot_plugin_apscheduler")
nonebot.load_plugin("nonebot_plugin_bam")
nonebot.run()
(8). 配置上面 run.py 中需要的 .env 运行环境
# 数据落地文件路径,建议设置一下。
# 用默认值(储存在内存中)的话一重启数据就没了
##### !!!!!!(不要使用 7sdream 提供的 :memory:)
BAM_DB_FILE="my_db"
# 重启时将所有用户的直播状态设置为未开播,而不是使用上次记录的状态。
# 正常使用不要打开此选项,是调试用的
BAM_ON_STARTUP_CLEAN_LIVE_STATUS=false
# 监控任务的间隔,这里设置的是每个用户间的间隔,而不是一轮的间隔。
# 所以如果一共关注了 N 个人(多个群关注同一个人只算一个)
# 那对于每个人来说,两次检测之间的间隔就是 N * interval
# 一般来说不要设置在 5 以下,可能会被 B 站 API 反爬而拒绝响应
BAM_TASK_INTERVAL=4
# 使用那一个直播间状态查询 API,默认为 2,如果发现被封禁了可以临时调到 1 试试
BAM_LIVE_API=2
# 动态内容在发送到 QQ 时的最大长度,超过长度会截断,设置为 0 或负数表示不截断
BAM_ACTIVITY_CONTENT_MAX_LENGTH=0
HOST=127.0.0.1 # 配置 NoneBot 监听的 IP/主机名
PORT=8080 # 配置 NoneBot 监听的端口
#iDEBUG=true # 开启 debug 模式 **请勿在生产环境开启**
###### !!!!!! 重要,这里是一个可以用来控制 机器人的用户。比如你的大号
SUPERUSERS=["你的QQ大号,或者某个群主、管理员,可多个"] # 配置 NoneBot 超级用户
NICKNAME=["awesome_bot"] # 配置机器人的昵称
COMMAND_START=["/"] # 配置命令起始字符
COMMAND_SEP=["/"] # 配置命令分割字符
# Custom Configs
CUSTOM_CONFIG1=""
CUSTOM_CONFIG2= # 留空则从系统环境变量读取,如不存在则为空字符串
(9). 运行 run.py 使用 python run.py
出现如下界面:打码的部分是你的QQ机器人,也就是你的小号。
然后就成功了,大功告成!!
4. 订阅你喜欢的UP主
具体的命令参见:https://github.com/7sDream/nonebot-plugin-bam 提到的命令列表。这应该能看的懂吧,可不懂给7sDream提 issue啊(误)
一共有两种方式:使用 superuser 私聊这个QQ群聊,一种是直接在群里@这个QQ机器人。
私聊的时候不需要ATQQ机器人,在群里就需要AT。
4.1 示例
比如你想在你的群里订阅 豆子的直播和动态,
- 加入大豆的粉丝群
- 邀请你的大号以及QQ小号(机器人)进群
- 使用如下命令:(@bot 的意思是使用大号 AT QQ机器人。)
@bot /bam/group/add
@bot /bam/follower/add 244057180
解释:后面这一串数字就是 > 大豆壳子主页连接 https://space.bilibili.com/244057180/] 的 uid。
欢迎关注~ 这是我作为一个三无粉丝唯一能做的。
5. 后记
我从来不是一个合格的粉丝。我记得大四的时候,我们寝室一起在看《创造101》,那个时候就非常喜欢「段奥娟」,但是到现在我已经几乎认不出她了。(尽管我也有关注她的微博)
我所羡慕的两个人:(因为感觉追星似乎挺有意思的)
室友佳哥。佳哥是一个经常吐槽我是一个伪粉的人。因为曾经我们一起看101的时候,我只关注段奥娟的表演节目,一些琐碎的日常视频也不看,也不打榜,也经常脸盲认不出人。而佳哥应该也不再追吴宣仪和孟美岐了,现在喜欢上了青春有你里面的 谢可寅。本科毕业之后追星行为更加疯狂,包括但不限于买爱豆代言的东西、充钱打榜、看线下线上演唱会(VIP座)。但是我觉得他很快乐,嗯是的,追星好像是快乐的。
技术大佬7sDream。7sDream是一个大牛逼,在互联网公司过着公务员的生活(只是因为他效率太高了而已)。每天高强度看Vtuber,尤其是阿夸,每次有关于虚拟偶像的事情都要在群里分享,感觉每天无欲无求,曾经他说过要不要一起来看 Vtuber,可我实在感受不到他看V的快乐。不过能体会到他每次分享这些消息的时候是非常欣喜,在支持关注一个事件的发展(当然对其他事情也是如此)。
我之所以这么做就是因为受他们的影响,感觉可以给自己的业余时间找点事情来做,这样就不至于每天陷入忙碌的焦虑以及痛苦之中,毕竟看好看的小姐姐聊天还是很有意思的。虽然如果当天装束我不喜欢,我就不看了(我果然还是伪粉),这样就能做到一种很随意。毕竟你也不认识ta,看不看对方也不会在意。而自己作为观众来说,似乎能从中感到到一丝的自由。