一个小白用 AI 搭建 Telegram 临时邮箱机器人的经历

作为一个编程小白,我用 Claude AI 完成了这个项目。这篇文章记录了整个过程,希望能给其他想用 AI 做项目的朋友一些参考。

起因

我之前做了个临时邮箱网站 m2u.io,就是那种可以生成临时邮箱地址的服务。网站上线后,发现很多用户都在用 Telegram,每次要用临时邮箱还得打开网页挺麻烦的。

作为一个不太会写代码的人,我就想:能不能做个 Telegram Bot,让用户直接在 Telegram 里就能用临时邮箱?

然后我想到了 Claude AI。

我的基础

老实说,我编程基础很差:

  • PHP 只会改改配置文件
  • 数据库只会用 phpMyAdmin 看看表
  • Telegram Bot?完全没接触过
  • GitHub?能看懂别人的项目但不会自己写

但我会:

  • 用 AI 聊天工具(ChatGPT、Claude)
  • 看得懂基本的代码逻辑
  • 知道怎么把代码上传到服务器
  • 遇到问题会 Google 和问 AI

整个开发过程

第一步:跟 AI 说需求

我一开始就很直接地跟 Claude 说:

"我有个临时邮箱网站,有 API 可以生成邮箱和获取邮件。我想做个 Telegram Bot,让用户在 Telegram 里就能用。我不太会写代码,你能帮我做吗?"

Claude 问了我一些问题:

  • 你的 API 地址是什么?
  • 需要什么参数?
  • 想要什么功能?
  • 有域名和服务器吗?

我一一回答后,它就开始写代码了。

第二步:创建 Bot

这一步还挺简单的,就是在 Telegram 里找 @BotFather:

  1. /newbot
  2. 起名字(我叫它 M2U Temporary Email Bot)
  3. 设置用户名(m2uiobot)
  4. 拿到一个 Token(一长串字符)

整个过程 5 分钟搞定。这一步不需要写代码,跟着提示操作就行。

第三步:配置数据库

Claude 给了我一个 SQL 文件,让我在 phpMyAdmin 里导入。

我照做了,创建了两张表:

  • user_dialog - 存用户信息和语言设置
  • user_email - 存用户绑定的邮箱

一开始表结构有问题(chat_id 用的 int),后来 Android 用户用不了,Claude 又给了修复脚本,改成了 BIGINT。

第四步:上传代码

Claude 给了我这些文件:

  • webhook.php - 主程序
  • includes/core.php - 核心函数
  • languages/zh.php - 中文语言包
  • languages/en.php - 英文语言包
  • languages/ru.php - 俄语语言包

我用 FTP 传到服务器,然后改了一下配置:

  • 数据库账号密码
  • Bot Token
  • API 地址

第五步:设置 Webhook

这步我直接在浏览器里访问了一个地址:

https://api.telegram.org/bot你的TOKEN/setWebhook?url=https://你的域名/webhook.php

浏览器显示 {"ok":true} 就说明成功了。

第六步:测试

我在 Telegram 里找到我的 Bot,发了 /start...

然后就报错了。😅

踩过的坑(都是 Claude 帮我解决的)

坑 1:Bot 没反应

问题:发消息给 Bot,完全没回复

怎么解决的:

  1. 我跟 Claude 说"Bot 没反应"
  2. Claude 让我检查 Webhook 状态(给了个链接)
  3. 发现 Webhook 有错误
  4. Claude 让我在代码里加日志
  5. 看日志发现是数据库连接错误
  6. 改了数据库密码就好了

坑 2:Android 用户用不了

问题:iPhone 用户能正常用,Android 用户点按钮没反应

怎么解决的:

  1. 我跟 Claude 说"有人反馈说 Android 用不了"
  2. Claude 问我数据库表结构
  3. 我截图发给它
  4. Claude 说 chat_id 字段太小,会溢出
  5. 它给了个 SQL 修复脚本
  6. 我在 phpMyAdmin 里运行了
  7. 问题解决

坑 3:按钮匹配不上

问题:有些用户点按钮没反应

怎么解决的:

  1. 我告诉 Claude"有用户说按钮不管用"
  2. Claude 说可能是按钮文本匹配的问题
  3. 它改了代码,用模糊匹配代替精确匹配
  4. 我替换了代码文件
  5. 所有人都能用了

坑 4:想加频道订阅功能

需求:我想让用户关注我的频道才能用 Bot

怎么做的:

  1. 我直接跟 Claude 说"我想让用户先关注频道才能用"
  2. Claude 问我频道地址
  3. 它改了代码,加了频道验证逻辑
  4. 还给我加了个"里程碑庆祝"功能(订阅数到整数就自动发庆祝消息)
  5. 我照着教程配置了一下
  6. 功能上线

坑 5:想支持多语言

需求:用户有外国人,想支持英文和俄语

怎么做的:

  1. 告诉 Claude"能不能支持多语言"
  2. Claude 问我要支持哪些语言
  3. 我说中文、英文、俄语
  4. 它生成了 3 个语言包文件
  5. 还加了自动识别用户语言的功能
  6. 我翻译了一下英文和俄语(用的 Google 翻译😂)
  7. 上传,搞定

我学到的经验

1. 跟 AI 说话要清楚

不要说"帮我做个 Bot",要说:

  • 我想做什么
  • 我已经有什么
  • 我遇到了什么问题
  • 我试过什么方法

越详细越好,AI 才能给出准确的方案。

2. 不懂就问,别装懂

我遇到不懂的就直接问 Claude:

  • "这段代码是干什么的?"
  • "为什么要这样写?"
  • "BIGINT 和 int 有什么区别?"

Claude 都会耐心解释,我也慢慢学会了一些基础知识。

3. 一步一步来

不要一次性做太多功能。我是这样的顺序:

  1. 先让 Bot 能回复消息
  2. 再加邮箱生成功能
  3. 然后加刷新邮件功能
  4. 再加频道订阅验证
  5. 最后加多语言支持

每一步都测试通过再进行下一步。

4. 保存好代码

每次改代码前,我都会:

  • 把旧文件改名备份(比如 webhook.php.backup)
  • 然后再上传新文件
  • 出问题就能快速恢复

5. 看日志很重要

Claude 教我在代码里加日志:

error_log("这里出错了:" . $error_message);

然后去服务器看 error_log 文件,就能知道哪里出问题了。

现在的功能

经过一个多星期的折腾,Bot 现在有这些功能:

  • ✅ 自动生成临时邮箱
  • ✅ 刷新收件箱
  • ✅ 查看邮件内容
  • ✅ 多语言支持(中英俄)
  • ✅ 频道订阅验证
  • ✅ 里程碑庆祝
  • ✅ iOS 和 Android 都能用

成本

整个项目的成本很低:

  • 服务器:用的原来网站的服务器,0 元
  • 域名:用的原来的域名,0 元
  • 时间成本:断断续续花了 1 周左右

如果从零开始:

  • 买个虚拟主机:5-10 美元/月
  • 域名:10 美元/年
  • Claude/ChatGPT:20 美元/月(可选,免费版也够用)

总共 100 美元以内就能搞定。

给其他小白的建议

1. 别怕,AI 真的能帮你

我之前也觉得做 Bot 很难,但用了 AI 后发现,只要你会描述需求,AI 基本都能帮你实现。

2. 先从简单的开始

不要一上来就想做很复杂的功能。先做个能发消息的 Bot,然后慢慢加功能。

3. 学会看错误信息

遇到错误不要慌,复制错误信息给 AI 看,它会告诉你怎么解决。

4. 多测试

每改一次代码都要测试,特别是:

  • 不同的设备(iOS、Android)
  • 不同的语言
  • 不同的场景

5. 加个用户群

我建了个 Telegram 群,用户遇到问题可以反馈。这样我就知道哪里需要改进了。

一些技术细节(给稍微懂一点的人)

虽然我是小白,但通过这个项目也学到了一些东西:

数据库字段类型很重要

Telegram 的 chat_id 是个很大的数字,必须用 BIGINT:

`chat_id` BIGINT NOT NULL

用 int 的话会溢出,Android 用户的 ID 特别容易超。

Webhook 比 Polling 好

Webhook 是 Telegram 主动推送消息给你的服务器,实时性好,不占资源。

Polling 是你的程序每隔几秒去 Telegram 拉取消息,会浪费服务器资源。

多语言支持不难

就是把所有文本都放到语言包文件里:

// languages/zh.php
return [
    'Welcome' => '欢迎使用!',
    'GetEmail' => '获取邮箱'
];

// languages/en.php
return [
    'Welcome' => 'Welcome!',
    'GetEmail' => 'Get Email'
];

然后根据用户语言加载对应的文件就行。

按钮要用模糊匹配

不要写成:

if ($text === '📧 获取邮箱') {
    // 只能匹配这一个文本
}

要写成:

if (strpos($text, 'email') !== false || strpos($text, '邮箱') !== false) {
    // 能匹配多种文本
}

这样不同语言、不同平台都能用。

最后想说的

作为一个编程小白,我觉得 AI 真的降低了做项目的门槛。

以前想做个东西,要么花钱请人做,要么自己花很长时间学。现在有了 AI,只要你:

  • 有想法
  • 会描述需求
  • 愿意尝试
  • 遇到问题愿意问

基本都能做出来。

这个 Bot 虽然功能不复杂,但对我来说是个很大的突破。从完全不懂 Telegram Bot,到现在能自己改代码、加功能、解决问题,这都是跟 AI 学的。

如果你也想做点什么,但觉得自己不会编程,不妨试试跟 AI 聊聊。说不定你也能做出自己的项目。


项目信息

欢迎使用和反馈!

最后修改:2025 年 10 月 25 日
如果觉得我的文章对你有用,请随意赞赏