注册

这里如何注册我就不说明了,大家自行去注册,主要是现在GPT的基本上已经备用很多了,导致了接码的价格也上涨了,而且使用token的话,其实还是很快可以用完免费的18美金;

接码:https://sms-activate.org/

准备材料

主要提供下Python的实现代码,首先需要准备一下的东西:

脚本:

# 1. Start by importing the necessary libraries and setting up the API clients
import requests
import json
import os
import threading # OpenAI secret Key
API_KEY = 'xxxxxxxxx'
# Models: text-davinci-003,text-curie-001,text-babbage-001,text-ada-001
MODEL = 'text-davinci-003'
# Telegram secret access bot token
BOT_TOKEN = 'xxxxxxxxxxxxx'
# Defining the bot's personality using adjectives
BOT_PERSONALITY = '' # 2a. Function that gets the response from OpenAI's chatbot
def openAI(prompt):
# Make the request to the OpenAI API
response = requests.post(
'https://api.openai.com/v1/completions',
headers={'Authorization': f'Bearer {API_KEY}'},
json={'model': MODEL, 'prompt': prompt, 'temperature': 0.4, 'max_tokens': 4000}
) result = response.json()
print(result)
final_result = ''.join(choice['text'] for choice in result['choices'])
return final_result # 2b. Function that gets an Image from OpenAI
def openAImage(prompt):
# Make the request to the OpenAI API
resp = requests.post(
'https://api.openai.com/v1/images/generations',
headers={'Authorization': f'Bearer {API_KEY}'},
json={'prompt': prompt, 'n': 1, 'size': '1024x1024'}
)
response_text = json.loads(resp.text) return response_text['data'][0]['url'] # 3a. Function that sends a message to a specific telegram group
def telegram_bot_sendtext(bot_message, chat_id, msg_id):
data = {
'chat_id': chat_id,
'text': bot_message,
'reply_to_message_id': msg_id
}
response = requests.post(
'https://api.telegram.org/bot' + BOT_TOKEN + '/sendMessage',
json=data
)
return response.json() # 3b. Function that sends an image to a specific telegram group
def telegram_bot_sendimage(image_url, group_id, msg_id):
data = {
'chat_id': group_id,
'photo': image_url,
'reply_to_message_id': msg_id
}
url = 'https://api.telegram.org/bot' + BOT_TOKEN + '/sendPhoto' response = requests.post(url, data=data)
return response.json() # 4. Function that retrieves the latest requests from users in a Telegram group,
# generates a response using OpenAI, and sends the response back to the group.
def Chatbot():
# Retrieve last ID message from text file for ChatGPT update
cwd = os.getcwd()
filename = cwd + '/chatgpt.txt'
if not os.path.exists(filename):
with open(filename, "w") as f:
f.write("1")
else:
print("File Exists") with open(filename) as f:
last_update = f.read() # Check for new messages in Telegram group
url = f'https://api.telegram.org/bot{BOT_TOKEN}/getUpdates?offset={last_update}'
response = requests.get(url)
data = json.loads(response.content)
for result in data['result']:
try:
# Checking for new message
if float(result['update_id']) > float(last_update):
# Checking for new messages that did not come from chatGPT
if not result['message']['from']['is_bot']:
last_update = str(int(result['update_id'])) # Retrieving message ID of the sender of the request
msg_id = str(int(result['message']['message_id'])) # Retrieving the chat ID
chat_id = str(result['message']['chat']['id']) # Checking if user wants an image
if '/img' in result['message']['text']:
prompt = result['message']['text'].replace("/img", "")
bot_response = openAImage(prompt)
print(telegram_bot_sendimage(bot_response, chat_id, msg_id))
# Checking that user mentionned chatbot's username in message
if '@chatGpt_dandelion_bot' in result['message']['text'] \
or '/ask' in result['message']['text']:
prompt = result['message']['text'].replace("@chatGpt_dandelion_bot", "")
# Calling OpenAI API using the bot's personality
bot_response = openAI(f"{BOT_PERSONALITY}{prompt}")
# Sending back response to telegram group
print(telegram_bot_sendtext(bot_response, chat_id, msg_id))
# Verifying that the user is responding to the ChatGPT bot
if 'reply_to_message' in result['message']:
if result['message']['reply_to_message']['from']['is_bot']:
prompt = result['message']['text']
bot_response = openAI(f"{BOT_PERSONALITY}{prompt}")
print(telegram_bot_sendtext(bot_response, chat_id, msg_id))
except Exception as e:
print(e) # Updating file with last update ID
with open(filename, 'w') as f:
f.write(last_update) return "done" # 5 Running a check every 5 seconds to check for new messages
def main():
timertime = 5
Chatbot()
# 5 sec timer
threading.Timer(timertime, main).start() # Run the main function
if __name__ == "__main__":
main()

Python ChatGPT Telegram Bot的更多相关文章

  1. Python+chatGPT编程5分钟快速上手,强烈推荐!!!

    最近一段时间chatGPT火爆出圈!无论是在互联网行业,还是其他各行业都赚足了话题. 俗话说:"外行看笑话,内行看门道",今天从chatGPT个人体验感受以及如何用的角度来分享一下 ...

  2. zabbix+telegram的API接口(告警)

    首先在telegram里创建一个有API接口的用户,创建是在   @BotFather 选择/start——————/newbot 输入机器人的用户名,根据提示操作.获得bot的API接口和群ID 通 ...

  3. 基于 .NET7.0 开发Telegram 机器人(入门)

    简介 Telegram(非正式简称TG.电报)是跨平台的即时通信软件,其客户端是自由及开放源代码软件,但服务端是专有软件.用户可以相互交换加密与自毁消息,发送照片.视频等所有类型文件.官方提供手机版( ...

  4. 精选 TOP45 值得学习的Python项目

    精选 TOP45 值得学习的Python项目 [导读]热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目.我们进行了翻译,在 ...

  5. 值得收藏的45个Python优质资源

    REST API:使用 Python,Flask,Flask-RESTful 和 Flask-SQLAlchemy 构建专业的 REST API https://www.udemy.com/rest- ...

  6. 值得收藏的45个Python优质资源(附链接)

    REST API:使用 Python,Flask,Flask-RESTful 和 Flask-SQLAlchemy 构建专业的 REST API https://www.udemy.com/rest- ...

  7. Python学习教程(十)精选 TOP45 值得学习的Python项目

    精选 TOP45 值得学习的Python项目 [导读]热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目.我们进行了翻译,在 ...

  8. ChatGPT推荐最常用的自动化测试、性能、安全测试工具!

    ChatGPT是一种当前被广泛关注的人工智能技术,它具备生成自然语言的能力,能够完成一些简单的文本生成.对话交互等任务.ChatGPT 算法的出现,打破了以前自然语言处理的瓶颈,使得机器具备了更加贴合 ...

  9. 一款能“干掉” ChatGPT 的应用「GitHub 热点速览」

    据说有了它,ChatGPT 就可以靠边站了.因为 Auto-GPT 能更加主动地完成你给他的指定任务,不用做更多的人为干涉,它的推理能力比 ChatGPT 更强,有人用它解放双手做了个 React 网 ...

  10. Awesome Go

    A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python. Contrib ...

随机推荐

  1. 终极指南!Terraform的进阶技巧

    如果您已经对 Terraform 了如指掌,并期望自己的 IaC 技能有进一步提升的话,这篇文章很适合您!在本文中,我们将分享一些 Terraform 的高级使用技巧.从使用模块(module).工作 ...

  2. 发现了阿里云 APP 的一个小 BUG

    由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接. 前几天在华为手机上使用阿里云 APP,从 oss bucket 中下载了一张图片,想要通过微信 ...

  3. Hybrid 实验

    实验拓扑 实验需求 按图示给各 PC 配置 IP 地址 PC1属于 VLAN 10 : PC2 与 PC5 属于 VLAN 20:PC4属于 VLAN 30 实现全网互通 实验步骤 1.配置链路聚合 ...

  4. Reactor 模式与Tomcat中的Reactor

    系列文章目录和关于我 参考:[nio.pdf (oswego.edu)](https://gee.cs.oswego.edu/dl/cpjslides/nio.pdf) 一丶什么是Reactor Th ...

  5. k8s驱逐篇(7)-kube-controller-manager驱逐-taintManager源码分析

    概述 taintManager的主要功能为:当某个node被打上NoExecute污点后,其上面的pod如果不能容忍该污点,则taintManager将会驱逐这些pod,而新建的pod也需要容忍该污点 ...

  6. ModifyAjaxResponse,修改ajax请求返回值,前后端调试之利器

    一.概要 先看图 京豆多的离谱,你的第一想法肯定是:按F12修改了网页元素 没那么简单,你看支持刷新的 肯定还是假的,通过 Fiddler 或 Wireshark 等抓包工具修改了响应包:或者干脆改了 ...

  7. PostgreSQL 性能优化: EXPLAIN 使用教程

    使用 EXPLAIN EXPLAIN基础 代价估计 启动开销 总开销 计划结点输出行数 计划结点输出行宽 执行统计 实际启动开销 实际总开销 实际输出行数 实际执行次数 I/O统计 共享块命中数 共享 ...

  8. 曲线艺术编程 coding curves 第十四章 其它曲线(Miscellaneous Curves)

    第十四章 其它曲线(Miscellaneous Curves) 原作:Keith Peters https://www.bit-101.com/blog/2022/11/coding-curves/ ...

  9. Day11_Java_作业

    1:递归那个兔子对数练习题 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?(使用递归去解决) 2:定义一个数组 ...

  10. nacos适配达梦、瀚高、人大金仓数据库及部分源码探究

    一.插件实现 1.插件目录结构 2.pom依赖 <dependency> <groupId>com.alibaba.nacos</groupId> <arti ...