German jTelegramBot

Discussion in 'German Forum' started by Blueforcer, Mar 16, 2019 at 12:32 PM.

  1. Blueforcer

    Blueforcer Active Member Licensed User

    @DonManfred
    Dann starte ich doch mal hier :)
    Ich habe versucht selbst eine Klasse zu bauen die einfach die offizielle Telegram API per POST/GET verwendet. Geht auch, aber wenn man alle funktionen umsetzen will wirds heftig :)
    Von wrapper schreiben habe ich leider gar keine Ahnung, daher finde ich es Mega das du dich dessen annimmst. Wenn du schon was zum Testen hast würde ich mich freuen dein Betatester zu sein:)

    Edit: Ich sehe gerade das in der JTelegramBot lib schon 3 Jahre nichts mehr gemacht wurde..

    Gruß
    Stephan
     
    Last edited: Mar 16, 2019 at 12:38 PM
  2. DonManfred

    DonManfred Expert Licensed User

    na, ich spiele nur damit rum bisher... Keine Ahnung ob da was marktreifes draus entsteht.

    Aber hier mal was zum spielen. Anbei ein Beispiel.

    Die Lib und alle zugehörigen jars kannst Du hier Download von Dropbox hier downloaden.

    Bitte beachte, dass ich heute morgen mit dem Wrap erst begonne habe. Beachte bitte auch, dass ich nul Ahnung habe was da aktuell noch alles fehlt.
    Aber meine bisherigen versuche irgendwas mit nem Keyboard oder Buttons zu machen schlugen bisher fehl..

    Aber manches geht auch bereits ;-)

    [​IMG]
    Code:
    jtb.sendMessage(jtb.byId(from.Id),"[jTelegramBot Thread](https://www.b4x.com/android/forum/threads/jtelegrambot.103778/#post-650611)","MARKDOWN",False,False,message.MessageId,replbld.forceReply)
     

    Attached Files:

  3. DonManfred

    DonManfred Expert Licensed User

    Code:
    jtb.sendLocation(jtb.byId(from.Id),50.8337006,6.441118,False,message.MessageId,replbld.sendCustomKeyboard3(r1.build))
        jtb.sendDocument(jtb.byId(from.Id),jtb.MediaByFile(
    File.DirApp,"jtbex.zip"),"DocumentCaption",False,message.MessageId,replbld.forceReply)
        jtb.sendPhoto(jtb.byId(from.Id),jtb.MediaByFile(
    File.DirApp,"donmanfred.png"),"DocumentCaption",False,message.MessageId,replbld.forceReply)
    [​IMG]
     
  4. DonManfred

    DonManfred Expert Licensed User

    Ja, die ursprünglichen jar files von Github sind auch abgesemmelt weil ein paar jsonfelder dazu gekommen sind in den jahren.

    Als ich jedoch die Sourcen angepasst habe und den Objekten die fehlenden Properties beigebracht habe hat es dann recht schnell funktioniert.

    Ich habe versucht raus zu finden ob die Api sich in Bezug auf "Keyboards" und "Buttons" sic irgendwie verändert hat. Konnte aber nichts finden.
    Von daher denke ich eigentlich, dass es funktionieren müsste. Grundsätzlich geht die Nachrich ja raus.
    Ich denke der Aufbau der Keyboarddaten ist aktuell noch falsch. Hier kannst Du gerne Investieren und versuchen rauszufinden wie das geht. Das ist das was mich an der ganzen Sache hier überhaupt interessiert....
     
  5. DonManfred

    DonManfred Expert Licensed User

    Na, ich komme der Sache schon ein bisschen näher, wenngleich ich die Buttons bisher noch in java zusammenbaue.
    [​IMG]

    Nach klicken des Buttons

    [​IMG]

    aber man möchte ja nochmal :D

    [​IMG]

    [​IMG]

    COOOOOOL


    Code:
    Sub Process_Globals
        
    Public glmap As Map
    End Sub

    Sub AppStart (Form1 As Form, Args() As String)
        glmap.Initialize
    End Sub

    Sub JTB_onCallbackQueryReceived(api As Object, id As Int, query As Object)
        
    Log($"JTB_onCallbackQueryReceived( ${id}, ${query}"$)
        
    Dim cbquery As CallbackQuery = query
        
    Log($"CallbackQuery.ChatInstance = ${cbquery.ChatInstance}"$)
        
    Log($"CallbackQuery.Data = ${cbquery.Data}"$)
        
    Log($"CallbackQuery.From = ${cbquery.From}"$)
        
    Dim from As User = cbquery.From
        
    Log($"FromFirstName: ${from.FirstName}"$)
        
    Log($"FromLastName: ${from.LastName}"$)
        
    Log($"FromUserName: ${from.Username}"$)
        
    Log($"FromID: ${from.Id}"$)

        
    Log($"CallbackQuery.Id = ${cbquery.Id}"$)
        
    Log($"CallbackQuery.Inline_message_id = ${cbquery.Inline_message_id}"$)
        
    Log($"CallbackQuery.Message = ${cbquery.Message}"$)
        
    Dim msg As Message = cbquery.Message
        bld.Initialize(api)
        

        
    If glmap.ContainsKey(msg.MessageId) Then
            jtb.sendMessage(jtb.byId(from.Id),
    $"Danke ${from.Username} für´s drücken von Button ${cbquery.Data} :-)"$,"MARKDOWN",False,False,msg.MessageId,replbld.hideCustomKeyboard)
        
            jtb.answerCallbackQuery(cbquery.Id,
    $"Danke für´s drücken des Buttons :D
        du hast gedrückt: ${
    cbquery.Data}"$,True' Sorgt für die Alertbox beim client
            glmap.Remove(msg.MessageId)
        
    Else
            jtb.sendMessage(jtb.byId(from.Id),
    $"Danke ${from.Username} für´s drücken von Button ${cbquery.Data} aber Du darfst nur einmal einen Button drücken..."$,"MARKDOWN",False,False,msg.MessageId,replbld.hideCustomKeyboard)
            jtb.answerCallbackQuery(cbquery.Id,
    $"Nur einmal möglich"$,False)
        
    End If

    End Sub
    Der Code, der die Buttons zeigt
    Code:
    Dim mark As InlineKeyboardMarkup
        mark.initialize(jtb.CreateDummyKeyboard)
        
        
    Dim buttons As Message = jtb.sendMessage(jtb.byId(from.Id),"Klick den Button!","MARKDOWN",False,False,message.MessageId,mark)
        glmap.Put(buttons.MessageId,buttons) 
    ' packt die Message in die globale Map wo sie beim auswerten bei einer CallbackQuery gesucht wird.

    Warum ich die Buttons aber nicht wieder ausblenden kann weiss ich noch nicht.

    Aber schon echt cool bisher ;-)
     
    Blueforcer likes this.
  6. Blueforcer

    Blueforcer Active Member Licensed User

    Super!
    Ich habe versucht deine Lib zum laufen zu bekommen. Habe noch die Core lib benötigt. aber wenn ich die aus dem Github repo nehme sagt er mir das die version nciht stimmt. Könntest du deine Zip noch vervollständigen?
     
  7. DonManfred

    DonManfred Expert Licensed User

    Ich schätze das liegt daran dass ich B4J mit Java 11 betreibe. Und damit auch kompiliert habe.
    Ich mach gerade aber ein Beispiel für die Allgemeinheit fertig (bin dabei die Lib als Beta zu veröffentlichen).

    [​IMG]
     
    Blueforcer likes this.
  8. Blueforcer

    Blueforcer Active Member Licensed User

    8er wäre besser..zumindest für mich^^
     
  9. DonManfred

    DonManfred Expert Licensed User

Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice