Extreme Thinking
GAS use telegram-bot connect ChatGPT API

2023-02-16


以下用問 ChatGPT 寫的

問 ChatGPT:

Google Apps Script 使用 telegram bot 連接 ChatGPT API 回應至 telegram 房間

ChatGPT 回:

  1. 要使用 Google Apps Script 连接 ChatGPT API 并将回复发送到 Telegram 群组,您需要完成以下步骤:

  2. 创建一个 Telegram bot 并获取 bot 的 token。

  3. 在 Google Apps Script 编辑器中创建一个新项目,并将项目命名为您喜欢的名称。

在代码编辑器中添加以下代码,以使用 Telegram bot API 进行身份验证并从 Telegram 群组接收消息:

var token = 'YOUR_TELEGRAM_BOT_TOKEN';
var telegramUrl = 'https://api.telegram.org/bot' + token;

function getUpdates() {
  var url = telegramUrl + '/getUpdates';
  var response = UrlFetchApp.fetch(url);
  var content = JSON.parse(response.getContentText());
  if (content.ok == true) {
    var message = content.result[content.result.length-1].message;
    var chat_id = message.chat.id;
    var text = message.text;
    if (text) {
      return {text: text, chat_id: chat_id};
    }
  }
  return null;
}
  1. 添加以下代码以连接到 ChatGPT API 并获取 ChatGPT 的回复:
    function getResponse(text) {
      var url = 'https://api.openai.com/v1/engine/your_engine_name/completions';
      var apiKey = 'YOUR_OPENAI_API_KEY';
      var prompt = text + '\nGPT Response:';
      var data = {
     "prompt": prompt,
     "temperature": 0.7,
     "max_tokens": 100,
     "top_p": 1,
     "frequency_penalty": 0,
     "presence_penalty": 0
      };
      var options = {
     'method': 'post',
     'headers': {
       'Authorization': 'Bearer ' + apiKey,
       'Content-Type': 'application/json'
     },
     'payload': JSON.stringify(data)
      };
      var response = UrlFetchApp.fetch(url, options);
      var content = JSON.parse(response.getContentText());
      return content.choices[0].text.trim();
    }
    

这将使用 OpenAI 的 API 进行自然语言处理,并返回 ChatGPT 的响应。

  1. 最后,添加以下代码以向 Telegram 群组发送 ChatGPT 的回复: ``` function sendResponse(text, chat_id) { var url = telegramUrl + ‘/sendMessage?chat_id=’ + chat_id + ‘&text=’ + text; var response = UrlFetchApp.fetch(url); return response; }

这将使用 Telegram bot API 向特定的 Telegram 群组发送回复。

6. 为了使脚本定期检查是否有新的消息需要回复,您可以使用 setInterval() 函数,例如:

function start() { setInterval(function() { var updates = getUpdates(); if (updates) { var response = getResponse(updates.text); sendResponse(response, updates.chat_id); } }, 1000); }

此函数将每隔 1 秒钟检查是否有新的消息,并自动回复。您可以根据需要更改此间隔时间。

7. 最后,单击“运行”按钮以启动您的脚本,并确保您已将其部署为 Web 应用程序(选择“发布”>“部署为 Web 应用程序”)。这将为您提供一个 URL,


這邊我加上改一下 (用房間號與前導來判斷)

function doPost(e) { var token = ‘1272333:AAH6d_w1222OtqZsdddZQ1Sh_vbj840’; var chat_id = ‘-31712236’; var chat = JSON.parse(e.postData.contents); // 是文字格式時 if(chat.message) { // 房間號的正確時處理 if (chat.message.chat.id == chat_id){ // 切割字串 var message = chat.message.text;   var messageArray = new Array(); var messageArray = message.split(“ “); // 前個為 /hi 時處理 if (messageArray[0] == “/hi”) { var msg = “收到訊息查詢第 : “+messageArray[1]; } } } } ```

自己組…. 這不寫了