通过内联键盘电报更新当前消息 VB.NET

update currently message by inline keyboard Telegram VB.NET

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

电报 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

这里的问题,我可以更新来自 "Hello" 的短信,成为 "Done"。使用内联键盘点击。

您将需要处理 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

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

希望对您有所帮助。