{“好的”:正确的,
“结果”:{
“message_id”:191,
“发件人聊天”:{
“id”:-1001527664788,
"title":"测试通道名称",
"用户名":"测试通道","类型":"通道"
},
“聊天”:{
“id”:-1001527664788,
“标题”:””,
"用户名":"测试通道","类型":"通道"
},
“日期”:1670434355,
“文本”:“123”
}
}

您将在 chat/id 下找到频道 ID。

确保将您的机器人提升为管理员

为您的机器人授予管理员权限非常重要,以确保它可以执行所有必要的任务。
所有码农请注意!这些访问令牌 ID 可能看起来不错,但它们只是为了展示。您的应用程序需要您自己的。

3. 是时候获取 API 密钥并连接到 OpenAI 引擎了,毫不费力!

要从 OpenAI 获取 API 密钥,您需要在 OpenAI 网站 (https://beta.openai.com/) 上创建一个帐户。拥有帐户后,您可以通过转到用户仪表板上的“API 密钥”选项卡来访问您的 API 密钥。

从那里,您可以 生成一个新密钥并使用它来验证您的 API 请求。保持 API 密钥的秘密和安全对于保护您的帐户非常重要。

请记住,OpenAI 可能会限制您可以进行的 API 调用数量。对于个人帐户,您将获得 18.00 美元的赠款,用于 API 请求。使用 API 之前,请务必查看 OpenAI 网站上的服务条款和定价信息。

连接到文本-davinci-003

文本-​​davinci-003 是OpenAI开发的大型语言模型。它被认为是当前可用的最强大的语言模型之一,因为它能够生成类似人类的文本并执行各种语言任务。它是在数十亿个单词的数据集上进行训练的,并且可以 生成连贯且读起来就像是人写的文本

好吧,代码战士们!是时候让你的机器人和 Telegram 像老朋友一样聊天了。通过几个简单的步骤和一点 Python 魔法,您将能够立即在您的组中连接并部署您自己的 ChatGPT 机器人。让我们开始编码吧!

4.开始编写Python代码

首先,我们将导入必要的库并设置关键身份验证参数。

# 1. 首先导入必要的库并设置 API 客户端 
导入请求
导入 json
导入操作系统
导入线程


# OpenAI 密钥
API_KEY = 'xxxxxxxxxxxsecretAPIxxxxxxxxxx'
# 型号:text-davinci-003、text-curie-001、text-babbage-001、text-ada-001
模型 = '文本-达芬奇-003'
# Telegram 秘密访问机器人令牌
BOT_TOKEN = 'xxxxxxbotapikeyxxxxx'
# 使用形容词定义机器人的个性
BOT_PERSONALITY = '用有趣的语气回答,'

介绍 BOT_PERSONALITY 参数 — 您的 ChatGPT 门票!使用这个方便的常量为您的机器人提供特定的语气或说话方式,例如 友好、专业或幽默。通过设置 BOT_PERSONALITY 参数,您可以自定义 ChatGPT 与用户对话的方式,并创建更加个性化和更具吸引力的体验。

这里有 15 种特定的音调,您可以使用它们来定制个性
ChatGPT 的:
1. 友善
2. 专业
3、幽默
4.讽刺
5. 机智
6. 时髦
7. 迷人
8. 厚脸皮
9. 古怪
10.悠闲
11. 优雅
12. 好玩
13. 舒缓
14. 激烈
15. 热情

然后, 创建一个从 OpenAI 聊天机器人检索响应的函数

#2a。获取 OpenAI 聊天机器人响应的函数
def openAI(提示):
# 向 OpenAI API 发出请求
响应 = requests.post(
'https://api.openai.com/v1/completions',
headers={'授权': f'承载{API_KEY}'},
json={'model': MODEL, 'prompt': 提示, '温度': 0.4, 'max_tokens': 300}


结果=response.json()
Final_result = ''.join(choice['text'] for choice in result['choices'])
返回最终结果

# 2b.从 OpenAI 获取 AI 图像的函数
def openAImage(提示):
# 向 OpenAI API 发出请求
响应 = requests.post(
'https://api.openai.com/v1/images/ Generations',
headers={'授权': f'承载{API_KEY}'},
json={'提示': 提示,'n' : 1, '尺寸': '1024x1024'}

response_text = json.loads(resp.text)

返回response_text['data'][0]['url']
#Example print(openAI(“什么是熵?”))

这个函数2.a将发送一个 使用给定输入向 OpenAI API 发出 POST 请求 (例如“什么是熵?”)供 API 进行分析。温度参数控制生成的响应的随机性 - 较低的值意味着更可预测的文本。 max_tokens 参数设置响应中单词和标点符号的数量限制。很快!该函数将返回指定 OpenAI 模型生成的响应。

接下来,是时候 构建一个向特定 Telegram 组发送消息的函数。

#3a。向特定电报组发送消息的功能
def telegram_bot_sendtext(bot_message,chat_id,msg_id):
数据 = {
'chat_id':chat_id,
'文本':bot_message,
'reply_to_message_id':msg_id
}
响应 = requests.post(
'https://api.telegram.org/bot' + BOT_TOKEN + '/sendMessage',
json=数据

返回response.json()

# 3b.将图像发送到特定电报组的功能
def telegram_bot_sendimage(image_url, group_id, msg_id):
数据 = {
'聊天 ID':群组 ID,
'照片': image_url,
'reply_to_message_id':msg_id
}
url = 'https://api.telegram.org/bot' + BOT_TOKEN + '/sendPhoto'

响应 = requests.post(url, 数据=数据)
返回response.json()
bot_messagechat_idmsg_id

现在是时候开始讨论好东西了——构建一个函数来检索 最新请求 来自 Telegram 群组中的用户,生成一个聪明的 使用 OpenAI 进行响应, 和 将其发送回群组。让我们来做这件事吧!

# 4. 检索 Telegram 群组中用户最新请求的函数, 
# 使用 OpenAI 生成响应,并将响应发送回组。

def 聊天机器人():
# 从文本文件中检索最后一条 ID 消息以进行 ChatGPT 更新
cwd = os.getcwd()
文件名 = cwd + '/chatgpt.txt'
如果不是 os.path.exists(文件名):
打开(文件名,“w”)作为 f:
f.write("1")
别的:
print("文件已存在")

打开(文件名)为 f:
最后更新 = f.read()

# 检查 Telegram 群组中是否有新消息
url = f'https://api.telegram.org/bot{BOT_TOKEN}/getUpdates?offset={last_update}'
响应 = requests.get(url)
数据 = json.loads(响应.内容)

对于数据中的结果['结果']:
尝试:
# 检查是否有新消息
if float(结果['update_id']) > float(last_update):
# 检查不是来自 chatGPT 的新消息
如果不是结果['message']['from']['is_bot']:
最后更新 = str(int(结果['update_id']))

# 获取请求发送者的消息ID
msg_id = str(int(结果['message']['message_id']))

# 获取聊天ID
chat_id = str(结果['消息']['聊天']['id'])

# 检查用户是否想要图像
如果结果['message']['text']中的'/img':
提示 = 结果['消息']['文本'].replace("/img", "")
bot_response = openAImage(提示)
打印(telegram_bot_sendimage(bot_response,chat_id,msg_id))

# 检查用户在消息中提到了聊天机器人的用户名
如果结果中的“@ask_chatgptbot”['message']['text']:
提示 = 结果['消息']['文本'].replace("@ask_chatgptbot", "")
# 使用机器人的个性调用 OpenAI API
bot_response = openAI(f"{BOT_PERSONALITY}{prompt}")
# 向电报群发回响应
打印(telegram_bot_sendtext(bot_response,chat_id,msg_id))
# 验证用户是否正在响应 ChatGPT 机器人
如果结果['message']中有'reply_to_message':
if 结果['message']['reply_to_message']['from']['is_bot']:
提示=结果['消息']['文本']
bot_response = openAI(f"{BOT_PERSONALITY}{prompt}")
打印(telegram_bot_sendtext(bot_response,chat_id,msg_id))
除了异常 e:
打印(e)

# 使用上次更新 ID 更新文件
将 open(文件名, 'w') 作为 f:
f.write(最后更新)

返回“完成”

但等等,还有更多!我们还将确保它们来自真实用户(而不是讨厌的机器人),如果它们提到机器人的用户名并且是对机器人的回复,则将它们发送到 OpenAI API 进行分析。 确保您已在脚本中重命名您的机器人,将“@ask_chatgptbot”替换为您想要的名称。

好的,最后一步!是时候向您的机器人添加调度组件,以便它可以定期检查组中的新消息并根据需要发送响应。 Python 的线程库可以帮助您解决这个问题。

# 5 每 5 秒运行一次检查以检查新消息
def main():
定时器时间=5
聊天机器人()

# 5 秒计时器
threading.Timer(timertime, main).start()

# 运行主函数
如果 __name__ == "__main__":
主要的()

哒哒!展示您的劳动成果:您精美的新聊天机器人的最终 Python 代码。只需将这个坏男孩复制并粘贴到您最喜欢的代码编辑器中,插入您的 API 密钥和聊天组 ID,您就可以立即与 ChatGPT 进行聊天。

代码的完整概述(github 链接在这里):

好了,伙计们!只需几个简单的步骤和一点 Python 魔法, 您已使用 OpenAI 成功为您的 Telegram 群组创建了一个聊天机器人。恭喜! 是时候坐下来观看热闹的反应了。或者,您知道,进行一些微调和定制,使您的聊天机器人真正独一无二。不管怎样,世界(或者至少是你的群聊)现在都是你的聊天机器人的牡蛎。

让聊天机器人恶作剧开始吧!只需点击下面的链接并向@ask_chatGPTbot发送消息