from typing import Any SIMPLE_CONFIG = { # 是否检测最新 StarBot 版本 "CHECK_VERSION": True, # Redis 连接配置 ( 必须 ) # Redis 地址 "REDIS_HOST": "localhost", # Redis 端口 "REDIS_PORT": 6379, # Redis 数据库号 "REDIS_DB": 0, # Redis 用户名 "REDIS_USERNAME": None, # Redis 密码 "REDIS_PASSWORD": None, # MySQL 数据源连接配置 ( 可选 ) # MySQL 地址 "MYSQL_HOST": "localhost", # MySQL 端口 "MYSQL_PORT": 3306, # MySQL 用户名 "MYSQL_USERNAME": "root", # MySQL 密码 "MYSQL_PASSWORD": "123456", # MySQL 数据库名 "MYSQL_DB": "starbot", # Mirai HTTP 及 Websocket 端口 "MIRAI_PORT": 7827, # 登录 B 站账号所需 Cookie 数据 ( 不登录账号将有部分功能不可用 ) 各字段获取方式查看:https://bili.moyu.moe/#/get-credential.md "SESSDATA": None, "BILI_JCT": None, "BUVID3": None, # 成功连接所有主播直播间的最大等待时长,可使得日志输出顺序更加易读,一般无需修改此处,单位:秒 "WAIT_FOR_ALL_CONNECTION_TIMEOUT": 60, # 是否自动判断仅连接必要的直播间,即当某直播间的开播、下播、直播报告开关均未开启时,自动跳过连接直播间,以节省性能 "ONLY_CONNECT_NECESSARY_ROOM": False, # 是否自动判断仅处理必要的直播事件,例如当某直播间的下播推送和直播报告中均不包含弹幕相关功能,则不再处理此直播间的弹幕事件,以节省性能 "ONLY_HANDLE_NECESSARY_EVENT": False, # 主播下播后再开播视为主播网络波动断线重连的时间间隔,在此时间内重新开播不会重新计算本次直播数据,且不重复 @全体成员,单位:秒 "UP_DISCONNECT_CONNECT_INTERVAL": 120, # 视为主播网络波动断线重连时,需发送的额外提示消息 "UP_DISCONNECT_CONNECT_MESSAGE": "检测到下播后短时间内重新开播,可能是由于主播网络波动引起,本次开播不再重复通知", # 动态推送抓取频率和视为新动态的时间间隔,单位:秒 "DYNAMIC_INTERVAL": 10, # 绘图器普通字体路径,如需自定义,请将字体放入 resource 文件夹中后,修改配置中的 normal.ttf 为您的字体文件名 "PAINTER_NORMAL_FONT": "normal.ttf", # 绘图器粗体字体路径,如需自定义,请将字体放入 resource 文件夹中后,修改配置中的 bold.ttf 为您的字体文件名 "PAINTER_BOLD_FONT": "bold.ttf", # 绘图器自适应不覆盖已绘制图形的间距,单位:像素 "PAINTER_AUTO_SIZE_BY_LIMIT_MARGIN": 10, # 弹幕词云字体路径,如需自定义,请将字体放入 resource 文件夹中后,修改配置中的 normal.ttf 为您的字体文件名 "DANMU_CLOUD_FONT": "normal.ttf", # 弹幕词云图片背景色 "DANMU_CLOUD_BACKGROUND_COLOR": "white", # 弹幕词云最大字号 "DANMU_CLOUD_MAX_FONT_SIZE": 300, # 弹幕词云最多词数 "DANMU_CLOUD_MAX_WORDS": 100, # Bot 主人 QQ,用于接收部分 Bot 异常通知等 "MASTER_QQ": None, # HTTP 代理 "PROXY": "", # 是否使用 HTTP API 推送 "USE_HTTP_API": False, # HTTP API 端口 "HTTP_API_PORT": 8088, # 消息发送间隔,消息发送过快容易被风控,单位:秒 "MESSAGE_SEND_INTERVAL": 0.5, # 命令触发前缀 "COMMAND_PREFIX": "", # 是否启用风控消息补发 "BAN_RESEND": False, # 风控发送失败消息滞留时间上限,消息因风控滞留超出此时长不会进行补发,0 为无限制,单位:秒 "RESEND_TIME_LIMIT": 0, # 是否补发开播推送、下播推送、直播报告、动态推送中的 @全体成员 和 @群成员 消息,可能造成不必要的打扰,不推荐开启 "RESEND_AT_MESSAGE": False, # 是否补发除开播推送、下播推送、直播报告、动态推送外的其他消息,如群内命令所触发的回复消息 "RESEND_ALL_MESSAGE": False } FULL_CONFIG = { # 是否检测最新 StarBot 版本 "CHECK_VERSION": True, # Redis 连接配置 ( 必须 ) # Redis 地址 "REDIS_HOST": "localhost", # Redis 端口 "REDIS_PORT": 6379, # Redis 数据库号 "REDIS_DB": 0, # Redis 用户名 "REDIS_USERNAME": None, # Redis 密码 "REDIS_PASSWORD": None, # MySQL 数据源连接配置 ( 可选 ) # MySQL 地址 "MYSQL_HOST": "localhost", # MySQL 端口 "MYSQL_PORT": 3306, # MySQL 用户名 "MYSQL_USERNAME": "root", # MySQL 密码 "MYSQL_PASSWORD": "123456", # MySQL 数据库名 "MYSQL_DB": "starbot", # Mirai HTTP 及 Websocket 端口 "MIRAI_PORT": 7827, # 登录 B 站账号所需 Cookie 数据 ( 不登录账号将有部分功能不可用 ) 各字段获取方式查看:https://bili.moyu.moe/#/get-credential.md "SESSDATA": None, "BILI_JCT": None, "BUVID3": None, # 成功连接所有主播直播间的最大等待时长,可使得日志输出顺序更加易读,一般无需修改此处,单位:秒 "WAIT_FOR_ALL_CONNECTION_TIMEOUT": 60, # 是否自动判断仅连接必要的直播间,即当某直播间的开播、下播、直播报告开关均未开启时,自动跳过连接直播间,以节省性能 "ONLY_CONNECT_NECESSARY_ROOM": False, # 是否自动判断仅处理必要的直播事件,例如当某直播间的下播推送和直播报告中均不包含弹幕相关功能,则不再处理此直播间的弹幕事件,以节省性能 "ONLY_HANDLE_NECESSARY_EVENT": False, # 主播下播后再开播视为主播网络波动断线重连的时间间隔,在此时间内重新开播不会重新计算本次直播数据,且不重复 @全体成员,单位:秒 "UP_DISCONNECT_CONNECT_INTERVAL": 120, # 视为主播网络波动断线重连时,需发送的额外提示消息 "UP_DISCONNECT_CONNECT_MESSAGE": "检测到下播后短时间内重新开播,可能是由于主播网络波动引起,本次开播不再重复通知", # 动态推送抓取频率和视为新动态的时间间隔,单位:秒 "DYNAMIC_INTERVAL": 10, # 绘图器普通字体路径,如需自定义,请将字体放入 resource 文件夹中后,修改配置中的 normal.ttf 为您的字体文件名 "PAINTER_NORMAL_FONT": "normal.ttf", # 绘图器粗体字体路径,如需自定义,请将字体放入 resource 文件夹中后,修改配置中的 bold.ttf 为您的字体文件名 "PAINTER_BOLD_FONT": "bold.ttf", # 绘图器自适应不覆盖已绘制图形的间距,单位:像素 "PAINTER_AUTO_SIZE_BY_LIMIT_MARGIN": 10, # 弹幕词云字体路径,如需自定义,请将字体放入 resource 文件夹中后,修改配置中的 normal.ttf 为您的字体文件名 "DANMU_CLOUD_FONT": "normal.ttf", # 弹幕词云图片背景色 "DANMU_CLOUD_BACKGROUND_COLOR": "white", # 弹幕词云最大字号 "DANMU_CLOUD_MAX_FONT_SIZE": 200, # 弹幕词云最多词数 "DANMU_CLOUD_MAX_WORDS": 80, # Bot 主人 QQ,用于接收 Bot 异常通知等 "MASTER_QQ": None, # HTTP 代理 "PROXY": "", # 是否使用 HTTP API 推送 "USE_HTTP_API": True, # HTTP API 端口 "HTTP_API_PORT": 8088, # 消息发送间隔,消息发送过快容易被风控,单位:秒 "MESSAGE_SEND_INTERVAL": 0.5, # 命令触发前缀 "COMMAND_PREFIX": "", # 是否启用风控消息补发 "BAN_RESEND": True, # 风控发送失败消息滞留时间上限,消息因风控滞留超出此时长不会进行补发,0 为无限制,单位:秒 "RESEND_TIME_LIMIT": 0, # 是否补发开播推送、下播推送、直播报告、动态推送中的 @全体成员 和 @群成员 消息,可能造成不必要的打扰,不推荐开启 "RESEND_AT_MESSAGE": False, # 是否补发除开播推送、下播推送、直播报告、动态推送外的其他消息,如群内命令所触发的回复消息 "RESEND_ALL_MESSAGE": False } use_config = SIMPLE_CONFIG user_config = {} def use(**config: Any): """ 使用用户自定义配置,可以选择自带配置后,传入部分自定义配置覆盖原有配置 Args: config: 自定义配置字典 """ user_config.update(config) def use_simple_config(): """ 使用最简配置,默认配置如下: 自动检测最新版本 使用 Redis 默认连接配置 (host: "localhost", port: 6379, db: 0, username: "", password: "") 使用 MySQL 默认连接配置 (host: "localhost", port: 3306, db: "starbot", username: "root", password: "123456") Mirai 连接端口 7827 未设置登录 B 站账号所需 Cookie 数据 不启用节省性能优化 主播下播后 2 分钟内开播视为主播网络波动,并发送提示消息 "检测到下播后短时间内重新开播,可能是由于主播网络波动引起,本次开播不再重复通知" 未设置 Bot 主人 QQ 不使用 HTTP 代理 不开启 HTTP API 推送 消息发送间隔 0.5 秒 无命令触发前缀 不开启风控消息补发 """ global use_config use_config = SIMPLE_CONFIG def use_full_config(): """ 使用推荐配置,默认配置如下: 自动检测最新版本 使用 Redis 默认连接配置 (host: "localhost", port: 6379, db: 0, username: "", password: "") 使用 MySQL 默认连接配置 (host: "localhost", port: 3306, db: "starbot", username: "root", password: "123456") Mirai 连接端口 7827 未设置登录 B 站账号所需 Cookie 数据 不启用节省性能优化 主播下播后 2 分钟内开播视为主播网络波动,并发送提示消息 "检测到下播后短时间内重新开播,可能是由于主播网络波动引起,本次开播不再重复通知" 未设置 Bot 主人 QQ 不使用 HTTP 代理 开启 HTTP API 推送 (port: 8088) 消息发送间隔 0.5 秒 无命令触发前缀 开启风控消息补发 仅补发推送消息 """ global use_config use_config = FULL_CONFIG def set_credential(sessdata: str, bili_jct: str, buvid3: str): """ 设置登录 B 站账号所需 Cookie 数据,各字段获取方式查看:https://bili.moyu.moe/#/get-credential.md Args: sessdata: SESSDATA bili_jct: BILI_JCT buvid3: BUVID3 """ set("SESSDATA", sessdata) set("BILI_JCT", bili_jct) set("BUVID3", buvid3) def get(key: str) -> Any: """ 获取配置项的值 Args: key: 配置项 Returns: 配置项的值 """ return user_config[key] if key in user_config else use_config[key] def set(key: str, value: Any): """ 手动设置配置项 Args: key: 配置项 value: 值 """ user_config[key] = value