'Class module
Sub Class_Globals
Dim ABT As ABTelegram
Public Bot As ABTLongPollingBot
Private botToken As String = "207189xxxx:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
Private botUserName As String = "zzzzzzzzzBot"
'Private callbackCounter As Int
End Sub
'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize
Bot.Initialize("Bot", Me, botToken, botUserName)
Dim upds As List = Bot.botgetUpdates
For i = 0 To upds.Size - 1
Dim upd As ABTUpdate = upds.Get(i)
Log("Go update: " & upd.UpdateId)
Next
End Sub
Sub Bot_UpdateReceived(update As ABTUpdate)
Log("Got an update")
If update.hasMessage Then
Dim msg As ABTMessage = update.GetMessage
Log("Message: " & msg.Text)
' Dim userPhotos As ABTUserProfilePhotos = Bot.BotGetUserProfilePhotos(msg.Chat.id)
' Log("photos: " & userPhotos.TotalCount)
' Dim Photos As List = userPhotos.Photos
' For i = 0 To Photos.Size - 1
' Dim photoSizes As ABTPhotoSizes = Photos.Get(i)
' For j = 0 To photoSizes.Sizes.Size - 1
' Dim photoSize As ABTPhotoSize = photoSizes.Sizes.Get(j)
' Dim photoFile As ABTFile = Bot.BotGetFile(photoSize.FileId)
' Log(photoFile.FilePath)
'
' Dim job1 As HttpJob
' job1.Initialize("Job" & j, Me)
' job1.Tag = photoFile.FilePath.Replace("photo/", "")
'
' Dim url As String = "https://api.telegram.org/file/bot" & botToken & "/" & photoFile.FilePath
' job1.Download(url)
' Next
' Next
' callbackCounter = callbackCounter + 1
' Bot.BotSendMessageAsync(callbackCounter, msg.ChatId, "Alweer hallo " & msg.Chat.FirstName)
Bot.BotSendMessage(msg.ChatId, "Using an Emoji " & ":grinning: in the message!") ' see https://github.com/vdurmont/emoji-java for a list of emojis
' Bot.BotSendPhoto(True, msg.ChatId, File.DirApp & "/" & "telegram.png")
' callbackCounter = callbackCounter + 1
' Bot.BotSendDocumentAsync(callbackCounter, True, msg.ChatId, File.DirApp & "/" & "mydocument.pdf", "mydocument.pdf")
' Bot.BotSendDocument(True, msg.ChatId, File.DirApp & "/" & "mydocument.pdf", "mydocument.pdf")
Bot.BotSendAudio(True, msg.ChatId, File.DirApp & "/" & "myaudio.mp3")
' Bot.BotSendVideo(True, msg.ChatId, File.DirApp & "/" & "myvideo.mp4")
' Bot.BotSendSticker(True, msg.ChatId, File.DirApp & "/" & "mysticker.webp")
' Bot.BotSendContact(msg.ChatId, "+32496000000", "Alain")
' Bot.BotSendChatAction(msg.ChatId, ABT.CHATACTIONTYPE_TYPING)
' Bot.BotSendLocation(msg.ChatId, 50.8492, 2.8779)
' Bot.BotSendVenue(msg.ChatId, 50.8492, 2.8779, "my venue", "Grote markt 1")
Bot.BotSendVoice(True, msg.ChatId, File.DirApp & "/" & "telegram.ogg")
' Dim keyb As ABTReplyKeyboard
' Dim rows As List
' rows.Initialize
' Dim tmpRow As ABTInlineKeyboardRow
' tmpRow.Initialize
' tmpRow.AddButton("test button", "http://one-two.com", "", "")
' rows.Add(tmpRow)
' keyb.InitializeAsInlineKeyboardMarkup(rows)
' Bot.BotEditMessageTextEx(msg.ChatId, msg.MessageId, 0, "Extended test", ABT.PARSEMODE_HTML, False, keyb)
Dim rkeyb As ABTReplyKeyboard
rkeyb.InitializeAsForceReplyKeyboard(False)
Bot.BotSendMessageEx(msg.ChatId, "some test: reply please", ABT.PARSEMODE_HTML, False, False, 0, rkeyb)
' Dim rkeyb2 As ABTReplyKeyboard
' Dim rows2 As List
' rows2.Initialize
' For i = 1 To 100
' Dim tmpRow2 As ABTKeyboardRow
' tmpRow2.Initialize
' tmpRow2.AddButton("Press me")
' rows2.Add(tmpRow2)
' Next
' rkeyb2.InitializeAsReplyKeyboardMarkup(rows2,False, False, False)
' Bot.BotSendMessageEx(msg.ChatId, "some test: press the button", ABT.PARSEMODE_HTML, False, False, 0, rkeyb2)
' Dim rkeyb3 As ABTReplyKeyboard
' Dim rows3 As List
' rows3.Initialize
' Dim tmpRow3 As ABTInlineKeyboardRow
' tmpRow3.Initialize
' tmpRow3.AddButton("Show image", "", "showimage", "")
' rows3.Add(tmpRow3)
'
' rkeyb3.InitializeAsInlineKeyboardMarkup(rows3)
' Bot.BotSendMessageEx(msg.ChatId, "some test: press the button", ABT.PARSEMODE_HTML, False, False, 0, rkeyb3)
End If
If update.hasCallbackQuery Then
Dim cquery As ABTCallbackQuery = update.GetCallbackQuery
Log("CallbackQuery: " & cquery.data)
Select Case cquery.Data
Case "showimage"
Dim msg As ABTMessage = cquery.Message
Bot.BotSendPhotoEx(True, msg.ChatId , File.DirApp & "/" & "myphoto.jpg", "A new photo of darth vader!",False, 0, Null )
Bot.BotSendLocation(msg.ChatId, 50.8492, 2.8779)
Bot.BotEditMessageText(msg.ChatId, msg.MessageId, "", "Shown")
End Select
End If
If update.hasInlineQuery Then
Dim ciquery As ABTInlineQuery = update.GetInlineQuery
Log("InlineQuery: " & ciquery.Query)
If ciquery.Query = "loc" Then
Dim lstResults As List
lstResults.Initialize
Dim myanswer As ABTInlineQueryResult
myanswer.InitializeAsLocation("1", 50.8492, 2.8779, "Your location")
lstResults.Add(myanswer)
Bot.BotAnswerInlineQuery(ciquery.Id, lstResults)
End If
End If
If update.hasChosenInlineResult Then
Dim ccresult As ABTChosenInlineResult = update.GetChosenInlineResult
Log("ChosenInlineResult: " & ccresult.Query)
End If
End Sub
Sub Bot_AsyncSendReceived(methodType As String, callbackId As String, success As Boolean, asyncObject As ABTObject)
Log("Async method: " & callbackId & " " & methodType & " " & success)
If success And asyncObject <> Null Then
If asyncObject.objectType="ABTMessage" Then
Dim message As ABTMessage = asyncObject
Log("Async callback: " & message.MessageId)
End If
End If
End Sub
Sub JobDone (Job As HttpJob)
Log("JobName = " & Job.JobName & ", Success = " & Job.Success)
If Job.Success = True Then
Dim fSave As OutputStream = File.OpenOutput(File.DirApp, Job.tag, False)
File.Copy2(Job.GetInputStream, fSave)
fSave.Close
Else
Log("Error: " & Job.ErrorMessage)
End If
Job.Release
End Sub