全局配置
Note
目前插件正处于快速迭代阶段,功能随时可能增加,也随时可能废弃,如果你发现之前的设置不起作用,请回到本页查看最新内容
插件的设置全部需要在你的项目根目录的 env 文件中写好(通常是 env.dev)。在运行时,插件会一次性读入,如果你需要更改全局配置,必须重新启动 bot 才能够更新设置。
下面是一份配置文件的示例,包含了 nonebot 自带的配置
HOST=127.0.0.1
PORT=8081
LOG_LEVEL=DEBUG
FASTAPI_RELOAD=false
SUPERUSERS=[""] # 配置 NoneBot 超级用户
NICKNAME=["Mutsuki"] # 配置机器人的昵称
COMMAND_START=["/",""] # 配置命令起始字符
COMMAND_SEP=["#"] # 配置命令分割字符
NOVELAI_TOKEN="eyJhbGciOiJI..."
NOVELAI_TAG="loli,1 girl,cute,kawaii,"
NOVELAI_PAID=1
NOVELAI_DAYLIMIT=0
NOVELAI_MODE="naifu"
NOVELAI_SITE="127.0.0.1:6969"
必要设置
Note
为支持负载均衡,这部分将在 0.6.0 版本废弃并重写
必要设置是用来连接后端服务器的,如果你没有正确配置,那么插件将无法正常工作。如果你使用该插件的扩展,也必须正确配置这些设置。
NOVELAI_MODE(将在 0.6.0 版本废弃)
- 类型: "novelai"|"naifu"|"sd"
- 默认值: "novelai"
运行模式。分别对应三种不同的后端。使用 novelai 时,你必须配置 NOVELAI_TOKEN 才能正常运行
如果你要使用 sd 作为后端,请确保 webui-user.bat 文件设置了set COMMANDLINE_ARGS=--api
NOVELAI_SITE(将在 0.6.0 版本废弃)
- 类型:string
- 当插件运行在naifu或sd模式时需要使用该设置 它对应着你的服务器地址,格式为 "IP:端口号" ,如果你使用 sd 的公网地址,格式为 "一串字母数字.gradio.app"
如果该设置留空,则会根据运行模式,使用对应模式默认的地址,naifu 对应127.0.0.1:6969,sd 对应127.0.0.1:7860
NOVELAI_TOKEN(将在 0.6.0 版本废弃)
- 类型: string
- 当插件运行在novelai模式时必填 这是 novelai 的授权令牌,一长串字母。有了这个令牌插件就可以在不需要你账号密码的情况下访问 novelai。换而言之,这是一个和你账号密码同等重要的东西,请不要把它告诉他人。
获取方式如下:
- 通过代码获取:
- 在网页中登录你的 NovelAI 账号
- 打开控制台 (F12),并切换到控制台 (Console) 标签页
- 输入下面的代码并按下回车运行
console.log(JSON.parse(localStorage.session).auth_token);
- 你会看到如下的输出,这部分就是你的 token
- 通过抓包获取:
- 在网页中登录你的 NovelAI 账号
- 打开控制台 (F12),并切换到网络 (Network) 标签页
- 随便生成一个什么东西,你会看到左侧多了两个 generate-image 的请求,点击下面那个,右侧会弹出它的信息
- 在标头 (Header) 一栏中寻找 authorization 一项,你会看到类似以 Bearer 开头的一长串字符
- 在 Bearer 后面的一长串就是你的 token,如果没有就在另一个请求里找
NOVELAI(将在 0.6.0 版本引入)
- 类型: dict
- 必填 这是一个包含着你所有后端数据的字典,它的完整示例格式如下:
{
//最简配置方式
"novelai": "token", // 加入一个novelai后端,并起名为novelai
"novelai-standby": "token", //加入一个novelai后端,并起名为standby
"naifu": "", //加入一个naifu后端,使用默认地址,并起名为naifu
"sd-single": "", //加入一个sd后端,使用默认地址,使用默认模型,并起名为single
//高级配置方式,包含sd的模型指定和隐藏模型,可以和上方配置混用
"sd": [
"", //加入一个sd后端,使用默认地址
{
"": "", //使用默认模型,并起名为sd
"nahita": "nahita", //使用nahita模型,并起名为nahita
"/刑": "blue_archive" //使用blue_archive模型,起名为"刑",并将该模型设置为仅能手动指定调用
}
],
"/naifu": "127.0.0.1:6970", //加入一个naifu后端,使用指定地址,并起名为naifu,由于与上方重名,会自动更名为naifu_1,并将该模型设置为仅能手动指定调用
"sd-2": ["xxxxx.gradio.app", { "final": "final-prune" }] //使用final_prune模型,并起名为2_final
}
当然一般情况下,你并不需要写那么多东西,你只需要写:
{ "novelai": "token" }
这样就完成了配置 novelai 的过程
如果你希望在保持队列限制的情况下,让某个后端同时进行两个工作,你可以加入两个不同名字的后端,而它们指向同一个地址。
如果你希望
如果你开启了队列限制,除非手动指定调用,否则运行时按照从上至下依次调用,当所有后端都在忙时将会进入等待。
如果你关闭了队列限制,则默认会将所有工作塞给位置第一个的后端,除非用户手动指定。
后台设置
这部分参数决定了 bot 的运行行为,大部分情况下保持默认即可,也可以根据自己的需求进行调整
NOVELAI_SAVE
- 类型: int
- 默认值: 1
- 0: 禁用本地保存
- 1: 启动本地保存
- 2: 启动本地保存,并保存追踪文件 用于设置文件保存的选项,文件将会保存至"你的 Bot 文件夹/data/novelai/output/群号",并以图片的 md5 值命名
由于插件采用了占用空间更小的 jpg 格式保存文件,无法保留原图片(png)的 chunk 信息,所以将追踪信息以同名 txt 保存。追踪文件将请求的用户、群号、关键词等内容保存下来,方便追踪图片的来源和信息。下面是一份完整的追踪文件内容:
time=2022-11-20 15:20:41
user_id=123456789
group_id=123456789
cost=0
count=3
seed=[444314745]
tags= masterpiece
ntags=
scale=11
strength=0.7
noise=0.2
samper=k_euler_ancestral
model=safe-diffusion
steps=28
width=512
height=768
img2img=False
NOVELAI_PAID
- 类型: int
- 默认值: 0
- 0: 禁用付费模式
- 1: 模拟点数模式
- 2: 严格点数模式
- 3: 无限制模式
该选项用于精准控制如果限制用户花费点数的行为。除了无限制模式,均会对用户以图生图、生成大图、高于 28 步等官网需要付费的行为进行限制。
禁用付费模式下以图生图的行为会被拒绝,而其他操作会通过一些处理被插件自动处理为符合官网免费规则的范围,例如降低分辨率或者将步数重置为默认值
模拟点数模式和严格点数模式会按照 novelai 官网的点数计算方法,用户需要消耗点数来进行官网需要付费的行为。具体见点数模式一章。不同的是,严格点数模式下免费行为也会进行点数计算.
NOVELAI_PURE
- 类型: bool
- 默认值: False
该选项决定了是否开启简洁返回模式,当该选项开启时,插件将只会返回图片,而不会返回其他数据。当该选项关闭时,插件会将安全的追踪信息一并打包为转发消息。
当你的 bot 因为风控等原因无法发送转发消息或者长消息时,可以尝试开启该选项
NOVELAI_LIMIT
- 类型: bool
- 默认值: True
该选项决定了是否开启全局队列限速。当该选项开启时,请求会按照先进先出的算法,保障服务器仅会同时处理一个请求。对于自己的服务器来说,这可以有效防止同时进行多个生成而暴毙。对于 novelai 来说,可能更多的是玄学上的安慰,因为目前并没有证据证明 novelai 会因为并发请求而封号。
NOVELAI_DAYLIMIT
- 类型: int
- 默认值: 0 (关闭功能)
该值确定了每个人每天最多生成多少张图,当该值为 0 时,不会对每个人每天的请求次数进行限制。
NOVELAI_H
- 类型: bool
- 默认值: False
该选项确定了插件是否允许 r18。当该选项开启后,r18 屏蔽词将会失效。如果你使用的是 novelai,该选项还会将模型自动切换至 r18 模型。
Note
开启该选项后,bot 可能会发出 r18 限制的图,这可能会导致你的 bot 被风控甚至封号。开启该选项表示你已经知道了可能会导致这种后果。
NOVELAI_ANTIREPORT
- 类型: bool
- 默认值: True
该选项决定了合并消息中的发送者显示的是谁。该选项开启时,发送者将会显示为发出绘图指令的用户。该选项关闭时,发送者将会显示为 bot。该选项可能对反举报具有一些玄学上的效果。
NOVELAI_MAX
- 类型: int
- 默认值: 3
该值确定了每次用户能够指定的最大同时生成数量。即便插件无论何时都会一张一张生成,但是如果用户设置的生成数量过大,会导致插件堵塞。
NOVELAI_SIZE
- 类型: int
- 默认值: 1024
该值确定了允许生成的图片最大分辨率,对应的像素数量为该值的平方。用户的分辨率请求都会被等比例降低至小于限制的像素数为止。在禁用付费模式下,则会以该值和 640 中较小的值为标准。
如果你的服务器比较寄,无法承受大图的生成,建议改成 640 或者其他自己测试能够承受的值。
Note
naifu 和 novelai 后台不会接受长宽大于 1024 的值,插件会自动通过等比降低的方式,将长宽限制在 1024 以内。sd 则限制在 2048 以内。如果你的 sd 是经过魔改的,支持更大的长宽值,那么请自行修改代码 "/backend/sd.py" 第 9 行 的 max_resolution 值
预设配置
这部分参数允许管理员、群主使用管理指令对每个群进行针对性设置。写在配置文件中的值是在没有经过管理指令设置的群中所使用的默认值。
NOVELAI_TAGS
- 类型: str
该值是所有请求中默认添加的基础词条,会添加在内置的优化词条之后,用户的词条之前。如果用户使用了-o 指令,那么基础词条和内置优化词条将被忽略
NOVELAI_NTAGS
- 类型: str
该值是所有请求中默认添加的基础排除词条,会添加在用户的词条之前。如果用户使用了-o 指令,那么基础排除词条将被忽略
NOVELAI_CD
- 类型: int
- 默认值: 60
该值限制了单个用户两次指令之间的间隔时间(单位秒)。当该值设置为 0 时,用户将不会被 CD 限制(实际上当该值比较小时,也基本是如此)
NOVELAI_ON
- 类型: bool
- 默认值: True
该选项决定了插件是否默认全局开启,结合管理指令可以做到群黑白名单的效果
NOVELAI_REVOKE
- 类型: int
- 默认值: 0
该值为插件自动撤回的时间(单位秒)。当该值为 0 时,插件不会自动撤回。如果你担心被举报可以设置一个值。
翻译API配置
这部分设置用于翻译 API,获取 API 的方法请自行百度。即便你不配置下面的值,插件也有内置的谷歌翻译和有道翻译可以使用,但是下面几种 API 相比于前者具有显然更高的翻译质量。
BING_KEY
- 类型: string
这是 BING 翻译需要使用的 KEY,请确保你在申请 API 时,实例范围选择的是全球。
DEEPL_KEY
- 类型: string
这是 DeepL 翻译需要使用的 KEY。DeepL 拥有最好的翻译质量,但是并不对国内用户开放,如果你有条件我建议搞一个。