Как получить телеграмму бота getUpdates json из vbscript и прочитать его - PullRequest
1 голос
/ 05 июля 2019

Я хотел создать своего бота в VBScript (я знаю, что это похоже на тролля и плохую идею, вероятно, я могу сделать это в lua, python, C #, PHP, ...., но я решил попробовать и сделать это из vbscript ) сложная часть в том, что я пытаюсь получить информацию из Telegram getUpdates

Я сделал этот код, например, и он вроде работает, я объясню, что работает, а что нет

Dim fso, outFile, TeleTest
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set outFile = fso.CreateTextFile("output.txt", True)
    set TeleTest = fso.CreateTextFile("TeleTest.txt", True)

    Dim url, req, json
    Set req = CreateObject("MSXML2.XMLHTTP")

    url = "https://api.telegram.org/bot"[TOKEN]"/getUpdates"

    req.open "GET", url, False
    req.send

    If req.Status = 200 Then
      TeleTest.Write req.responseText
    End If
    '  Load the JSON array into a JsonArray:
    set jsonArray = CreateObject("Chilkat_9_5_0.JsonArray")
    success = jsonArray.Load("TeleTest.txt")
    If (success <> 1) Then
        outFile.WriteLine(jsonArray.LastErrorText)
        WScript.Quit
    End If

    '  Get some information from each record in the array.
    numRecords = jsonArray.Size
i = 0
Do While i < numRecords
    outFile.WriteLine("------ Record " & i & " -------")

    ' jsonRecord is a Chilkat_9_5_0.JsonObject
    Set jsonRecord = jsonArray.ObjectAt(i)
	outFile.WriteLine("  ok: " & jsonRecord.StringOf("ok"))
	outFile.WriteLine("  result: " & jsonRecord.SizeOfArray("result"))

    '  Examine information for this record
	u = 0
    Do While u < nummessage
    nummessage = jsonRecord.SizeOfArray("result[u].message")
	Loop
    outFile.WriteLine("Number of message: " & nummessage)
    j = 0
    Do While j < nummessage
        jsonRecord.J = j
        outFile.WriteLine("  message text: " & jsonRecord.StringOf("result[j].message[j].text"))
        j = j + 1
    Loop
    i = i + 1
Loop
    outFile.Close

так что первая часть, которая должна получать обновления и сохранять их ino TeleTest.txt, работает нормально, она получает обновления, она сохраняет json в файл .txt (или что угодно, я также могу сохранить его в строку в VBS, или файл .json)

проблема в том, что вторая часть, где я использую Chilkat, выдает ошибку

Blockquote ChilkatLog: Загрузить: Версия Chilkat: 9.5.0.78 Невозможно получить массив с индексом 0. --Load --ChilkatLog

любая помощь или любая идея будут оценены по достоинству, даже если Chilkat не подходит для этого, может быть, скажите мне, почему, и дайте мне что-нибудь еще ?! (Chilkat был единственным dll, который я нашел для работы с vbscript и выполняет чтение json, прочее)

1 Ответ

1 голос
/ 05 июля 2019

я получил его на работу, я обнаружил, что из этого примера Chilkat нужен файл Json, чтобы он понравился

[{json}]

, но Telegram json похож на это

{json}

, поэтому исправление будет легко просто изменить строку 15 из TeleTest.Write req.responseTextк этому коду ниже

TeleTest.Write "[" + req.responseText + "]"

мой код теперь работает нормально, если кто-то найдет что-то не так или ответит на мой вопрос, будет признателен, я надеюсь, что кто-то еще, кому это нужно, найдет это

...