From 4601284228aa6490279f0d3828bf6e13ec0a3fbe Mon Sep 17 00:00:00 2001 From: Nofated095 Date: Tue, 11 Jul 2023 19:54:18 +0800 Subject: [PATCH] update about --- source/_drafts/Make_Blog_Better.md | 104 ------------ source/_drafts/about_backup.md | 43 +++++ source/_drafts/xiaoguanjiaapi.md | 247 ----------------------------- source/about.md | 56 +------ source/friends.md | 1 - 5 files changed, 47 insertions(+), 404 deletions(-) delete mode 100644 source/_drafts/Make_Blog_Better.md create mode 100644 source/_drafts/about_backup.md delete mode 100644 source/_drafts/xiaoguanjiaapi.md diff --git a/source/_drafts/Make_Blog_Better.md b/source/_drafts/Make_Blog_Better.md deleted file mode 100644 index 5f0bfbf..0000000 --- a/source/_drafts/Make_Blog_Better.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: 优化博客 -date: 2022-01-07 20:10:00 -tags: -- 博客 -- Hexo -- Icarus -- Vercel -categories: -- 写 BUG 日常 -- 野生技术协会 ---- -怎么才能让博客加载速度更快呢(呆 - - -博客已经运行了一段时间了,但是一直以来主站点使用 GitHub Pages 套 CloudFlare,导致整体加载速度一直不尽人意。这几天集中处理了一下博客的问题。 - -## 解决文章时间问题 - - -Hexo 更新日期问题 - -自从更换到了 GitHub Actions 来部署我的博客,一直有一个让我很烦恼的事情,就是 Hexo 最新部署的文章更新时间会显示成最新的部署时间,这就导致我的博客所有文章的更新时间都是错误的。 - -{% raw %}
{% endraw %} -请确认你的 Hexo 版本为 5.0 及以上 -{% raw %}
{% endraw %} - -解决方案是修改 `_config.yml` 中的 `updated_option` 中的值改为 `date`,并重新部署博客。 - -## 使用更快的静态资源加载 - - -博客加载速度优化之路二 - -前段时间,jsDelivr 备案许可被注销,导致本站大量静态资源加载失败,要不就是时间极长,拖慢速度,遂寻找更稳定的 CDN 替换。于是我选择了[字节跳动静态资源公共库](https://cdn.bytedance.com/),加载速度相当不错,也挺稳定的。 - -这里以 [hexo-theme-icarus](http://ppoffice.github.io/hexo-theme-icarus/) 为例来修改 - -``` diff _config.icarus.yml -providers: -- cdn: jsdelivr -- fontcdn: google -- iconcdn: fontawesome -+ cdn: '[cdnjs]https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/${package}/${version}/${filename}' -+ fontcdn: loli -+ iconcdn: 'https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/font-awesome/5.15.2/css/all.css' -``` - -其它主题请根据各个主题的文档自行修改 CDN,一般主题的用户文档中都会写。 - -## 摆脱 GitHub Pages 和 CloudFlare - -因为 GitHub Pages 和 CloudFlare 在一起用对于中国大陆的加载实在太不友好,即使用了更快的静态资源库依然得不到提升,于是我决定从 GitHub Pages 和 Actions 迁移到 [Vercel](https://vercel.com),且不使用 CloudFlare 的代理。只要注册 Vercel 账户并导入 GitHub 储存库即可。 - -## 使用最新的主题 - -最开始安装主题是将主题包的 zip 下载下来并解压到 theme 文件夹,现在我决定弃用这种方法,改为 npm 安装来使用最新版的主题,只要删掉 icarus 的主题文件夹,再在 `package.json` 中里面加入 hexo-theme-icarus 即可 - -``` diff package.json - "dependencies": { - "bulma-stylus": "^0.8.0", - "hexo": "^5.0.2", -+ "hexo-theme-icarus": "^4.5.0", - "hexo-deployer-git": "^3.0.0", -``` - -但是这样做也有缺点,因为每次部署都是从 npm 直接拉取,我无法修改网页底部的信息,所以原来的萌ICP就加不上了,其实挺可惜的。 diff --git a/source/_drafts/about_backup.md b/source/_drafts/about_backup.md new file mode 100644 index 0000000..0b3599c --- /dev/null +++ b/source/_drafts/about_backup.md @@ -0,0 +1,43 @@ +## 关于我 + +我是 Nofated,一个 16 岁学生,目前高一。你可以叫我九五、nof、Nofated 或者 Nofated095,或者你认为合适的称呼。 + +我不擅长做一些有关于编程事情,语言组织能力不怎么好,有时会无法表达自己所想的东西。我逻辑性不强,写出来的文章有时也难以让人看懂。大部分时间都在实装和使用别人做好的程序。我也就会装装系统,给系统装装软件,部署一下 Hexo、VuePress,改一改别人写好的 HTML,除此之外我基本什么也不会。 + +我本身不是 🏳️‍🌈LGBTQIA,但我坚定的支持他们。我支持他们在中国大陆的发展。 + +### 游戏 + +下面是我玩过的游戏列表。最常玩的是 Minecraft Java Edition,我也是一个 GTA 狂热粉,尤其喜欢 GTA 三部曲,喜欢 Rockstar Games 出品的大部分游戏。 + +- Minecraft + - Java Edition + - Bedrock Edition +- Grand Theft Auto + - III + - Vice City + - San Andreas + - Liberty City Stories + - Chinatown Wars + - IV + - V +- Yuzu Soft + - Senren Banka +- Cyberpunk 2077 +- ネコぱら + - Vol. 0 + - Vol. 1 + - Vol. 2 + - Vol. 3 + - Vol. 4 + - Extra +- Doki Doki Literature Club +- Phigros +- Cytus II +- OpenTTD + +### 番剧 + +我没刷过很多番剧,最喜欢的番剧依次是《四月是你的谎言》、《鬼灭之刃》和《可塑性记忆》。最喜欢的角色是《四月是你的谎言》中的宫园薰和《可塑性记忆》中的艾拉。喜欢的 OP 是《Ring of Fortune》和《光るなら》。对日常番没有什么感觉。 + +你可以在 [bangumi](https://bgm.tv/anime/list/671125) 上查看更多。 diff --git a/source/_drafts/xiaoguanjiaapi.md b/source/_drafts/xiaoguanjiaapi.md deleted file mode 100644 index 98bd4dc..0000000 --- a/source/_drafts/xiaoguanjiaapi.md +++ /dev/null @@ -1,247 +0,0 @@ ---- -title: 记一次探索班级小管家 API 的过程 -date: 2023-01-22 -cover: https://pic.rmb.bdstatic.com/bjh/a5a79c32320475bd69aed54f5371065a.png -tags: -- 网络 -- API -categories: -- [写 BUG 日常, 野生技术协会] -- [日常生活, 学业, 高中] -toc: true ---- -记录北京五中树洞,立项 、开发、运营的过程。 - - - -## 引言 - -今年 1 月份末,我在我们同学群里水群的时候, - -- **1 月 16 日** 注册了一个 `+1` 的 Telegram 账号作为 Q2TG 创建时注册的 User Bot,在部署完成后,我发现此 Telegram 账号立刻被封禁,但是 Q2TG 本身功能并没有发生影响,于是我就没太在意。 -- **1 月 18 日** 在正常工作两天后的凌晨,我注意到机器人似乎出了故障,图片和表情均无法转发,这不免让我有些疑惑,于是我重新启动了 Docker 容器,然后就发现转发彻底寄了,一看后台,原来最让人担心的 User Bot 还是寄了,`USER_DEACTIVATED_BAN`,Q2TG 报错,直接导致整个转发寄了。于是早上又尝试了 [`v1`](https://github.com/Clansty/Q2TG/tree/main) 版本,机器人勉强工作,也就继续用了。然后下午又注册了一个新的 `+1` 的 Telegram 账号,简单养了养号后又怀揣着忐忑的心情重新部署了一遍,然后我的 Telegram 账号就又寄了... - -> 我艹你喵杜叔叔,全家死光光!喵的!很明显这是中了杜叔叔的风控了,浪费了两个号... - -## 看看 Issues 叭! - -既然封了两次,我是不敢再拿我大号作死,于是我就打算看看 Issues 里面有没有人和我出现了一样的问题。 - -果不其然我就看到了~~在我之前尝试部署 Q2TG 的 [金姐姐](https://github.com/jinzhijie)~~ [Clansty/Q2TG#74](https://github.com/Clansty/Q2TG/issues/74) [Clansty/Q2TG#83](https://github.com/Clansty/Q2TG/issues/83)。一些人也是出现了无法登录 User Bot 的情况,也有人希望能禁用 User Bot。 - -但是 Issues 并没有帮我解决什么,但是至少知道了以下几点: - -- User Bot 在 v1 中是作为类似于插件安装的,可以不进行配置 -- User Bot 在群发功能中基本上只起到一个检测 Telegram 上消息撤回的功能 - -也就是说,按照现在的情况,如果我们可以舍弃检测 Telegram 上原生消息撤回,那 User Bot 模式确实有些没必要,毕竟部署的 Q2TG 是给 *LittleSkin* 的一系列群组使用的。 - -那有什么办法能去除 Q2TG 吗?User Bot 模式已经写死在了代码里,那也就只能——— - -## 分析与修改代码 - -[Clansty/Q2TG](https://github.com/Clansty/Q2TG) 的最新版本 `v3`,也就是 `rainbowcat` 是基于 *TypeScript* 开发的。那就开始吧!但是从哪里开始呢?在随意翻看了几个文件后,我将视线锁定在了 `tgUser` 这个变量上。~~因为写的真的太明显了,简直就是一眼丁真。~~ - -于是我尝试在 GitHub 搜索了一下,没想到就可以直接开始肝了( - -![](https://imgsrc.baidu.com/super/pic/item/377adab44aed2e739f6b04e9c201a18b86d6fa71.jpg) - -### ❌ 脑瘫思路 —— Undefined - -分析了一下之后,我就打算开始着手删掉 `tgUser` 相关的内容。但在删到快一半的时候,我突然~~脑溢血地~~想到,如果我们在功能实现的部分保留所有的 `tgUser`,但是我们让他 `Undefined`,会不会就能直接非常方便地 disable 掉 User Bot 呢?(逃 - -然后我就真的大智若愚(大若智)地去试了。 - -很容易猜到 `tgUser` 应该是在机器人第一次配置的时候就被定义了,所以我就打算去 `SetupControlers.ts` 看看能不能在这里动动手脚,跳过里面地 User Bot 登录过程。 - -```ts SetupControlers.ts>folded -import Telegram from '../client/Telegram'; -import SetupService from '../services/SetupService'; -import { Api } from 'telegram'; -import { getLogger, Logger } from 'log4js'; -import { Button } from 'telegram/tl/custom/button'; -import setupHelper from '../helpers/setupHelper'; -import commands from '../constants/commands'; -import { WorkMode } from '../types/definitions'; -import OicqClient from '../client/OicqClient'; -import { md5Hex } from '../utils/hashing'; -import Instance from '../models/Instance'; -import db from '../models/db'; - -export default class SetupController { - private readonly setupService: SetupService; - private readonly log: Logger; - private isInProgress = false; - private waitForFinishCallbacks: Array<(ret: { tgUser: Telegram, oicq: OicqClient }) => unknown> = []; - // 创建的 UserBot - private tgUser: Telegram; - private oicq: OicqClient; - - constructor(private readonly instance: Instance, - private readonly tgBot: Telegram) { - this.log = getLogger(`SetupController - ${instance.id}`); - this.setupService = new SetupService(this.instance, tgBot); - tgBot.addNewMessageEventHandler(this.handleMessage); - tgBot.setCommands(commands.preSetupCommands, new Api.BotCommandScopeUsers()); - } - - private handleMessage = async (message: Api.Message) => { - if (this.isInProgress || !message.isPrivate) { - return false; - } - - if (message.text === '/setup' || message.text === '/start setup') { - this.isInProgress = true; - await this.doSetup(Number(message.sender.id)); - await this.finishSetup(); - return true; - } - - return false; - }; - - private async doSetup(ownerId: number) { - // 设置 owner - try { - await this.setupService.claimOwner(ownerId); - } - catch (e) { - this.log.error('Claim Owner 失败', e); - this.isInProgress = false; - throw e; - } - // 设置工作模式 - let workMode: WorkMode | '' = ''; - try { - while (!workMode) { - const workModeText = await this.setupService.waitForOwnerInput('欢迎使用 Q2TG v2\n' + - '请选择工作模式,关于工作模式的区别请查看这里', [ - [Button.text('个人模式', true, true)], - [Button.text('群组模式', true, true)], - ]); - workMode = setupHelper.convertTextToWorkMode(workModeText); - } - this.setupService.setWorkMode(workMode); - } - catch (e) { - this.log.error('设置工作模式失败', e); - this.isInProgress = false; - throw e; - } - // 登录 oicq - try { - let uin = NaN; - while (isNaN(uin)) { - uin = Number(await this.setupService.waitForOwnerInput('请输入要登录 QQ 号')); - } - const platformText = await this.setupService.waitForOwnerInput('请选择登录协议', [ - [Button.text('安卓手机', true, true)], - [Button.text('安卓平板', true, true)], - [Button.text('iPad', true, true)], - [Button.text('macOS', true, true)], - ]); - const platform = setupHelper.convertTextToPlatform(platformText); - let password = await this.setupService.waitForOwnerInput('请输入密码', undefined, true); - password = md5Hex(password); - this.oicq = await this.setupService.createOicq(uin, password, platform); - this.instance.qqBotId = this.oicq.id; - await this.setupService.informOwner(`登录成功`); - } - catch (e) { - this.log.error('登录 OICQ 失败', e); - this.isInProgress = false; - throw e; - } - // 登录 tg UserBot - if (this.instance.userSessionId) { - await this.setupService.informOwner('userSessionId 已经存在,跳过'); - } - else - try { - const phoneNumber = await this.setupService.waitForOwnerInput('创建 Telegram UserBot,请输入你的手机号码(需要带国家区号,例如:+86)'); - await this.setupService.informOwner('正在登录,请稍候…'); - this.tgUser = await this.setupService.createUserBot(phoneNumber); - this.instance.userSessionId = this.tgUser.sessionId; - await this.setupService.informOwner(`登录成功`); - } - catch (e) { - this.log.error('创建 UserBot 失败', e); - this.isInProgress = false; - throw e; - } - } - - private async finishSetup() { - this.tgBot.removeNewMessageEventHandler(this.handleMessage); - this.isInProgress = false; - await this.setupService.finishConfig(); - this.waitForFinishCallbacks.forEach(e => e({ - tgUser: this.tgUser, - oicq: this.oicq, - })); - } - - public waitForFinish() { - return new Promise<{ tgUser: Telegram, oicq: OicqClient }>(resolve => { - this.waitForFinishCallbacks.push(resolve); - }); - } -} -``` - -可以很清楚看到 *99 - 144* 行是注册 Telegram User Bot 的部分,那我们简单修改一下。 - -```diff 99 - 144 - // 登录 tg UserBot - if (this.instance.userSessionId) { - await this.setupService.informOwner('userSessionId 已经存在,跳过'); - } -- else -- try { -- const phoneNumber = await this.setupService.waitForOwnerInput('创建 Telegram UserBot,请输入你的手机号码(需要带国家区号,例如:+86)'); -- await this.setupService.informOwner('正在登录,请稍候…'); -- this.tgUser = await this.setupService.createUserBot(phoneNumber); -- this.instance.userSessionId = this.tgUser.sessionId; -- await this.setupService.informOwner(`登录成功`); -- } -+ else { -+ await this.setupService.informOwner('Telegram User Bot 创建过程跳过'); -+ } - catch (e) { - this.log.error('创建 UserBot 失败', e); - this.isInProgress = false; - throw e; - } -``` - -非常好,不是吗?于是我就乐呵的跑了 GitHub Actions 构建 Docker Image,然后发现居然还真构建成功了!于是我就更乐呵的去 `/setup` 我的机器人,没想到也正常跳过了! - -当然这么改别的肯定是寄的,测试了一下转发功能完全废的。为什么相比也很清楚。~~你 `Undefined` 别的文件肯定不服会罢工啊!~~ - -### ✔️ 正确的打开方式 —— 扬了 tgUser - -在经历了全程脑瘫的过程后,我终于稍微清醒和安分了一点,开始着手去删 `tgUser` 和与其相关的部分。 - -当然这里要非常感谢 [凌莞](https://github.com/Clansty),看着亲爱的代码真是赏心悦目,如看代码眼暂冥,~~简直就是天籁~~。 - -在修改时,我发现 `personal` 代表个人模式,再结合 `tgUser` 的分布情况,可以很轻松的注释掉大部分有关代码,遇到与个人模式有关的部分都可以直接注释掉,只要符合语法就不会对群组模式产生奇奇怪怪的影响。 - -你可以在 [这里](https://github.com/Clansty/Q2TG/compare/rainbowcat...Nofated095:Q2TG:rainbowcat?expand=1) 找到我对 *Q2TG* 所有的修改。 - -## 功能测试 - -在构建 Image 完成后,我激动地~~关掉了 `v1` 的 Container~~ 在服务器上拉取并部署。 - -![部署过程](https://imgsrc.baidu.com/super/pic/item/b58f8c5494eef01fa2599500a5fe9925bd317da2.jpg) - -![正常工作的瞬间](https://imgsrc.baidu.com/super/pic/item/4e4a20a4462309f7af2920d7370e0cf3d6cad6b5.jpg) - -~~真是感动到让人落泪~~。 - -![文件转发](https://imgsrc.baidu.com/super/pic/item/2cf5e0fe9925bc31c1e08c5d1bdf8db1ca1370b2.jpg) - -## 后记 - -这篇文章写于部署成功后的几天。经过了几天的功能测试,除了机器人无法检测 *Telegram* 删除的消息,需要用户对发出的消息编辑或回复 `/rm` 才能删除和撤回消息,但整体来看功能都是正常可以使用的,而且完全去除了 User Bot。 - -需要注意的是,去除了 User Bot 后,个人模式几乎无法工作。更多关于去 User Bot 的 Q2TG 项目的内容(包括部署方法、注意事项等)请查看 [Nofated095/Q2TG](https://github.com/Nofated095/Q2TG)。 diff --git a/source/about.md b/source/about.md index 3fac7f5..a124ab5 100644 --- a/source/about.md +++ b/source/about.md @@ -2,27 +2,23 @@ title: 关于 cover: https://littleskin.cn/background.jpg date: 2020-10-01 -donates: widgets: comment: --- -想了又想,决定还是把博客和我分开写 {% meting "1398631166" "netease" "song" %} ## 关于博客 -无论你身处何方,这个小博客都欢迎你的到来。 +无论你身处何方,这里都欢迎你的到来。 -眼前的这个不起眼的小博客大致始于 2019 年年末到 2020 年年初。历经了很多次改版。原定的是一个基于 WordPress 的软件资源站或者开源镜像站。目前最早的文章只能追溯到 **2020-05-07** 最开始使用 Gridea 进行写作,一段时间后开始使用 Hexo + `hexo-theme-icarus` 进行写作并沿用至今。博客最早使用 GitHub Pages 和 Gitee Pages,目前博客部署工作交给 Vercel。Gitee Pages 已废弃,GitHub Pages 用作其他项目。 +眼前的这个不起眼的站点大致始于 2019 年年末到 2020 年年初。历经了很多次改版。原定的是一个基于 WordPress 的软件资源站或者开源镜像站。目前最早的文章只能追溯到 **2020-05-07** 最开始使用 Gridea 进行写作,一段时间后开始使用 Hexo + `hexo-theme-icarus` 进行写作并沿用至今。博客最早使用 GitHub Pages 和 Gitee Pages,目前博客部署工作交给 Vercel。Gitee Pages 已废弃,GitHub Pages 用作其他项目。 -博客使用字节跳动静态资源公共库中的部分静态资源作为 cdn。 - -博客已进行 [萌国 ICP ](https://icp.gov.moe/)备案,萌备案号是 [萌 ICP 备 20232345 号](https://icp.gov.moe/?keyword=20232345)。 +博客已进行 [萌国 ICP](https://icp.gov.moe/) 备案,萌备案号是 [萌 ICP 备 20232345 号](https://icp.gov.moe/?keyword=20232345),前萌备案号是 [萌 ICP 备 20214514 号](https://icp.gov.moe/?keyword=20214514) 博客已签约 [十年之约](https://www.foreverblog.cn/),可以在 [这里](https://www.foreverblog.cn/blog/2712.html) 查看详情。按照约定,博客会开十年之久。 -博客是 [开往-友链接力](https://github.com/travellings-link/travellings) 的成员站点,非常支持优秀的站点之间互相来往联系。 +博客是 [开往-友链接力](https://github.com/travellings-link/travellings) 的成员站点。 ### 最早的一篇文章 ``` markdown guo-chan-cao-zuo-xi-tong-deepin-shi-wan.md @@ -58,47 +54,3 @@ isTop: false 我觉得可能 Deepin 很快就会成为我最喜欢的 Linux 操作系统了。 ``` - -## 关于我 - -我是 Nofated,一个 15 岁学生,目前高一。你可以叫我九五、nof、Nofated 或者 Nofated095,或者你认为合适的称呼。 - -我不擅长做一些有关于编程事情,语言组织能力不怎么好,有时会无法表达自己所想的东西。我逻辑性不强,写出来的文章有时也难以让人看懂。大部分时间都在实装和使用别人做好的程序。我也就会装装系统,给系统装装软件,部署一下 Hexo、VuePress,改一改别人写好的 HTML,除此之外我基本什么也不会。 - -我本身不是 🏳️‍🌈LGBTQIA,但我坚定的支持他们。我支持他们在中国大陆的发展。 - -### 游戏 - -下面是我玩过的游戏列表。最常玩的是 Minecraft Java Edition,我也是一个 GTA 狂热粉,尤其喜欢 GTA 三部曲,喜欢 Rockstar Games 出品的大部分游戏。 - -- Minecraft - - Java Edition - - Bedrock Edition -- Grand Theft Auto - - III - - Vice City - - San Andreas - - Liberty City Stories - - Chinatown Wars - - IV - - V -- Yuzu Soft - - Senren Banka -- Cyberpunk 2077 -- ネコぱら - - Vol. 0 - - Vol. 1 - - Vol. 2 - - Vol. 3 - - Vol. 4 - - Extra -- Doki Doki Literature Club -- Phigros -- Cytus II -- OpenTTD - -### 番剧 - -我没刷过很多番剧,最喜欢的番剧依次是《四月是你的谎言》、《鬼灭之刃》和《可塑性记忆》。最喜欢的角色是《四月是你的谎言》中的宫园薰和《可塑性记忆》中的艾拉。喜欢的 OP 是《Ring of Fortune》和《光るなら》。对日常番没有什么感觉。 - -你可以在 [bangumi](https://bgm.tv/anime/list/671125) 上查看更多。 diff --git a/source/friends.md b/source/friends.md index b31faba..737f6db 100644 --- a/source/friends.md +++ b/source/friends.md @@ -2,7 +2,6 @@ title: 友情链接 cover: https://littleskin.cn/background.jpg date: 2020-10-01 -donates: widgets: ---
Forever Travelling