【问题标题】:update currently message by inline keyboard Telegram VB.NET通过内联键盘 Telegram VB.NET 更新当前消息
【发布时间】:2020-01-05 22:43:19
【问题描述】:

您好,我尝试通过内联键盘更新消息。

电报 OnMessageReceived 函数:

 Dim ID As String = e.Message.From.Id.ToString ' it is your id
 Select Case e.Message.Text
 Case "/ts"
 Await bot.SendTextMessageAsync(ID, "Hello", replyMarkup:=CreateInLineMainMenuMarkup)
Return
End Select

内嵌键盘功能的

 Public Shared Function CreateInLineMainMenuMarkup() As IReplyMarkup

    Dim buttonsList As Dictionary(Of String, String) = New Dictionary(Of String, String)()
    buttonsList.Add("Refresh", "test")

    Return CreateInlineKeyboardButton(buttonsList, 1)

End Function

Public Shared Function CreateInlineKeyboardButton(ByVal buttonList As Dictionary(Of String, String), ByVal columns As Integer) As IReplyMarkup
    Dim rows As Integer = CInt(Math.Ceiling(CDbl(buttonList.Count) / CDbl(columns)))
    Dim buttons As InlineKeyboardButton()() = New InlineKeyboardButton(rows - 1)() {}

    For i As Integer = 0 To buttons.Length - 1
        buttons(i) = buttonList.Skip(i * columns).Take(columns).[Select](Function(direction) TryCast(New InlineKeyboardCallbackButton(direction.Key, direction.Value), InlineKeyboardCallbackButton)).ToArray()
    Next

    Return New InlineKeyboardMarkup(buttons)
End Function

Image To explain

这里的问题,我可以从“你好”更新短信,“完成”。使用内联键盘点击。

【问题讨论】:

    标签: telegram telegram-bot


    【解决方案1】:

    您将需要处理 OnCallbackQuery 事件。

    第一:

    AddHandler bot.OnCallbackQuery, AddressOf OnCallbackQuery
    

    然后添加函数 OnCallbackQuery(用于处理回调内联键盘的任何操作)

    Private Async Sub OnCallbackQuery(sender As Object, e As CallbackQueryEventArgs)
        Dim call_data As String = e.CallbackQuery().Message.Text
        Dim message_id As Long = e.CallbackQuery().Message.MessageId
        Dim chat_id As Long = e.CallbackQuery().Message.Chat.Id
        Dim callback As Long = e.CallbackQuery.Id
    
        If call_data.Equals("Hello") Then
        Dim answer As String = "Done"
        Dim r As Telegram.Bot.Types.Message = Await bot.EditMessageTextAsync(chat_id, message_id, (answer))
        Dim r2 As Boolean = Await bot.AnswerCallbackQueryAsync(callbackQueryId:=callback, text:=answer)
    
        End If
    End Sub
    

    注意,它会将内联键盘消息更新为普通文本消息。

    希望对您有所帮助。

    【讨论】:

    • 我能问一下如何制作那个内联静态内联键盘,因为它在更新后变成了普通文本。 ?!
    • 随意提出新问题,并提供帮助。
    猜你喜欢
    • 2017-06-18
    • 2018-03-31
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多