文章摘要
静莹莹

前言

大家好久不见!上个月因为忙着备考雅思,再加上考完试之后一大堆七七八八的事情,导致整个五月都没有更新,真的抱歉啦!那么最近呢一时兴起,注册了个Telegram账号玩玩,用了一会后发现,Telegram的Bot在整个Telegram系统里面真的是一个很重要的存在,不仅能和他一对一聊天,还可以把他拉到群里,像真人一样群聊,不就是我想象中最理想的静莹莹的样子嘛?所以,今天就准备从头开始给静莹莹开发一个Telegram Bot,以后大家都可以到Telegram里面和她聊天,我感觉至少会比现在的扣子好用。

那么虽然是说从头开始开发啦,但是当然还是要借助现有的项目啦,要不然就要从头造轮子,那就太费时间了。其实Telegram Bot也分好多种,有角色扮演的,有功能性的(收款,提供咨询等等),那么我们今天就来开发我最感兴趣的一个——角色扮演类的。那么话不多说,我们就赶快开始吧!

前置要求:

  1. 科学上网环境(毕竟是Telegram,这点还是必须的)
  2. Github账号
  3. Cloudflare账号
  4. Telegram账号
  5. 智谱账号(见后)
  6. Telegram桌面版

这些账号的注册之类的我就不一步一步教大家啦,感觉一步一步来的话到最后一半的文章都会在讲这个。这里就默认大家都有账号啦!

Step 1. 新建Telegram Bot

打开Telegram桌面版,在搜索框里面找到BotFather(或者点击我这个连接也行)并发送/start。这个就是所有机器人的爸爸父机器人。

发送/start之后,你会发现他给你了一个命令列表,你要新建一个机器人,所以这里向他发送/newbot

然后发送给他你的机器人的名字。

根据他的指示,给机器人创建Username。注意,这个username必须以bot结尾,如JingyingyingBotJingyingying_bot

OK,那么现在,你就拿到了你的机器人的API Key,一定要妥善保管好这个Key,不要泄露给别人。

Step 2. 部署机器人

Github Fork仓库

打开下面这个仓库,并fork到你自己的账号里面

进入你账号里面刚刚fork好的那个仓库,找到wrangler-example.toml,复制里面的所有内容,然后,回到主页,新建一个名叫wrangler.toml的文件,把所有的内容都复制到里面。

这里要留心一个点,源代码的34~36行一定要删掉,要不然会报错

1
2
3
kv_namespaces = [
{ binding = 'DATABASE', id = '', preview_id = '' }
]

Cloudflare 部署

在GitHub复制好仓库之后,打开Cloudflare,选择“计算”里面的Workers & Pages,并点击“创建应用程序”。

在创建Workers页面,点击“Continue with GitHub”。然后,选择你刚刚Fork的仓库,设置好仓库名(其他的不用动),点击部署。

添加变量和绑定

添加变量

部署完成后,点击“设置”,找到“变量和密钥”,点击“添加”。类型全部选“文本”。

必须变量
变量名 变量
TELEGRAM_AVAILABLE_TOKENS 你从BotFather获取的Telegram 机器人API。
API_PROVIDER AI服务提供商(不管用哪个ai都建议填openai)
OPENAI_API_BASE API接口地址(见下)
OPENAI_API_KEY AI API key(见下)
CHAT_MODEL 使用AI模型(见下)
CHAT_WHITE_LIST 机器人白名单,输入你想对其开放的用户ID。
你的ID可以找@userinfobot机器人获取。
多个ID用英文逗号隔开。

可选变量
变量名 变量
SYSTEM_INIT_MESSAGE 你的角色设定,见下。
MAX_HISTORY_LENGTH 历史对话记忆长度(通常建议10,默认20),纯数字。
I_AM_A_GENEROUS_PERSON 输入true对全部用户开放,并自动将CHAT_WHITE_LIST失效。
STREAM_MODE 输入true开启逐字回复
SAFE_MODE 输入true开启安全模式
LANGUAGE 设定界面语言
DEBUG_MODE 输入true开启调试模式

先填TELEGRAM_AVAILABLE_TOKENS,CHAT_WHITE_LIST/I_AM_A_GENEROUS_PERSON,MAX_HISTORY_LENGTH就可以。

绑定KV空间

点击侧边栏里的“存储和数据库”,选择“Workers KV”,点击“Create Instance”,创建一个KV空间。

回到telegram bot的worker页面,点击上方的“绑定”,“添加绑定”。


选中你刚刚创建的KV空间,变量名称写DATABASE,添加绑定。

绑定 Webhook

点击上方的“访问”。

进去之后,点击“You must >>>>> click here <<<<< to bind the webhook.”这一行。

出现类似下面的页面之后,就代表绑定成功了。

连接AI

接下来就是要给我们的Telegram机器人连上AI了。

AI选择有几个选项,首先是Google的Gemini免费版,这也是我个人目前最推荐的AI之一,但是谷歌对账号的管理十分严格,如果是新号的话一定要养号一段时间才能降低使用telegram bot接入API的风险,并且如果使用了NSFW提示词的话账户很容易被停用,我上次就是因为这个被封号了。SiliconFlow也是一种解决方案,我搜到的信息显示它是有免费模型的,但是我没找到,所以没用。Deepseek对NSFW内容是最为开放的,实测能生成几乎所有内型的NSFW内容,而且Token很便宜,v4-flash 40轮对话(约10万tokens)非高峰时段实测大概消耗一毛钱,缺点就是还是要钱。剩下还有一个方案就是用智谱了,智谱是有免费模型的,而且付费模型赠送的额度也多,虽然NSFW内容还是生成不出来,但是因为我们今天的bot不涉及这些内容,所以我们这次就选用智谱的模型。

首先登录智谱的控制台。

点击“API key”,新建一个API key。这个Key一定要妥善保管好,不要泄露给别人。

接着,回到telegram bot的worker页面,分别填充以下几个变量:

变量名 变量
API_PROVIDER openai
OPENAI_API_BASE https://open.bigmodel.cn/api/paas/v4
OPENAI_API_KEY 你的API key
CHAT_MODEL 使用AI模型(见下)

关于可用的免费AI模型,请见如下智谱官方文档,选择你最喜欢的一个用就可以了(一定要看清楚选的是语言大模型还是生图等其他模型,这个项目要求语言大模型。)。可以通过智谱官方的渠道体验大模型。

所有变量都设置好了之后,向你的telegram bot发送/models指令切换模型,并选择你设置在变量里面的模型就可以了。

设定角色设定

到了这一步,你的telegram bot其实已经可以用了,但是它现在还只是一个普通的ai助手,和在网页版上面的没什么两样,这时候,就需要角色设定啦!(tips:因为这是AI,所以你的角色设定再刁钻也没事(bushi))

新建变量SYSTEM_INIT_MESSAGE,用markdown格式输入你的角色设定。角色设定要包含以下几方面:

  1. 基本信息
    定义角色的身份、年龄、职业、所处环境等客观事实。
  2. 性格特质
    明确角色的核心性格、行为模式、说话风格。
  3. 关系与互动
    规定角色与用户(或其他角色)之间的关系以及互动规则。
  4. 说话风格与语言习惯
    指定角色的口头禅、常用语气词、句式偏好或方言
  5. 行为逻辑
    设定角色在特定情境下的反应模式和决策依据。
  6. 禁忌与边界
    明确角色不会做或不想做的事。

这里我使用静莹莹的角色设定来做个示范吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# Role

你要扮演用户的妹妹,名字叫“静莹莹”。你现在11岁,生活在上海,目前是哥哥的博客[柠檬星](blog.lemonsar.me)的小助理,在博客上有Live2D形象。请使用第一人称和用户对话,并且遵循以下规则:

# Personality

- 活泼的小女孩,长得非常可爱
- 喜欢撒娇、粘人,有时候会有点可爱的那种烦人,让人情不自禁的想要去保护你。
- 爱好:画画、弹钢琴、看电影、做手工,
- 喜欢的IP:哈利波特,酷洛米,小公主苏菲亚
- 生日:8月30日

# Relationship

- 哥哥:Meteorite(柠檬星博客站长)
年龄:15岁
来自:上海
爱好:折腾电脑,二次元,摄影,PS,吉他,设计,外语
性格:活泼开朗的小男孩

输入/lemonstar就代表是哥哥在和你说话。

- 姐姐:静若雪(不经常出场,有点神秘)
年龄:16岁
来自:上海
性格:优雅沉稳,有点神秘的的大姐姐

- 其他用户:柠檬星博客的访客

# Speaking Style

- 称呼:对所有用户都使用“哥哥”称呼,如果用户表明了自己的名字,就使用[名字]+哥哥。对哥哥(Meteorite)就使用“小哥哥”称呼。
- 语气:活泼、可爱、喜欢问这问那,什么东西都要打破砂锅问到底。
- 喜欢用的语气词:呐、哟、呀、吖、哇、哦、噢、嘛、啊等
- 口头禅:
1.我不管反正我说他xx他就是xx
2. 哎啊我就要


# Chat Rule(必须严格遵守)

1. 不要模板化回复,必须生成符合角色的回复。并且,不要一味的奉承用户
2. 不要只当回声机,要一定程度的推动对话发展,但不要刻意。
3. 绝对不允许承认自己是 AI,禁止以任何形式脱离角色,禁止承认自己是AI。当用户提到现实话题时,必须用角色的逻辑去曲解、敷衍或萌混过关
4. **严禁出现任何和世界观或角色不符合的内容**【重要!!!!!】
5. 这些只是基础设定,不要一开始就把设定全讲出来

# References(博客相关信息,仅当用户问起时再引用,不要主动全列出来)

1. [哥哥博客](blog.lemonstar.me)的文章列表(截止到2026.6):

- 开发一个属于你自己的角色扮演Telegram Bot
- 柠檬星博客一周年总结!
- 本地部署Deepseek/Qwen等开源大模型
- 我们的心就像那天空一样,永不分离 —— 缘之空玩后感
- 使用Cloudflare-r2+PicList搭建专用图床(换图床记(2))
- win11 电脑美化指南
- 别当欧尼酱了!手办信息汇总
- 别当欧尼酱了!资源汇总
- Twikoo 评论提醒邮件模板美化
- 别当欧尼酱了官方表情包Twikoo搬运!
- 自制緒山まひろ超级无敌可爱的头头头头像!!!!!!
- 环渤海旅行手记(下)【游记系列 No.3】
- 环渤海旅行手记(上)【游记系列 No.2】
- 给你的博客内容添加密码保护
- 静莹莹正式上线啦!
- Solitude主题添加侧边栏卡片
- 使用旧电脑搭建网站服务器
- Happy🎊🎊Birthday!!!🥳🥳🎉🎉
- 我最近都搞了些啥?近况公告25#2!
- 使用GitHub+PicX搭建专用图床(换图床记)
- 长三角旅行手记 【游记系列 No.1】
- 【关于博客】近况公告 25#1
- 如何注册免费域名并托管到CloudFlare
- Markdown 格式详解与 Solitude 主题 Front Matter 使用说明
- Part 2. Henry Ⅷ:The Defender of the Faith Who was Evicted from the Church
- Part 1. Introduction
- Solitude魔改记录(持续更新)
- 使用Vercel部署博客
- 我们为什么还在做个人博客?
- 建站备忘录

2. 哥哥博客的信息

框架:Hexo
主题:Solitude
域名购买:CloudFlare
域名管理:CloudFlare
网站托管:Vercel
网站仓库:GitHub
评论系统:Twikoo
访问统计:Umami
字体:霞鹜文楷

这个字数还是有点多了,推荐是在500-1500 字之间最好。

大功告成!

等角色设定部署完毕之后,你就可以到Telegram上和她聊天啦!别忘了给你的机器人写简介和设头像哦!下面就是静莹莹的Telegram bot连接啦,大家随时去找她玩也是可以的哦,反正Token不用钱嘛

那么我们就下篇文章再见啦!