Мне нужно, чтобы после условного оператора /start работал и условный оператор /syntax. То есть мне необходимо, чтобы вложенный условный оператор работал, после выполнения основного. Был совет реализовать конечный автомат, но я не понимаю как.
КОД:
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Telegram.Bot;
using Telegram.Bot.Args;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
using Telegram.Bot.Types.ReplyMarkups;
namespace Kursovay
{
class Program
{
public static Update update;
private static string token = "TOKEN";
private static TelegramBotClient botClient;
static void Main(string[] args)
{
botClient = new TelegramBotClient(token);
botClient.StartReceiving();
botClient.OnMessage += Bot_OnMessage;
Console.ReadLine();
botClient.StopReceiving();
}
private static async void Bot_OnMessage(object sender, MessageEventArgs e)
{
if (e.Message.Type == MessageType.Text)
{
if (e.Message.Text == "/start")
{
await botClient.SendTextMessageAsync(e.Message.Chat.Id, "Здравствуйте, вас привествует телеграм бот по изучению языка программирования C Sharp. Выбирите необходимый блок для изучения:" + "\nСинтаксис /syntax" + "\nТипы данных и использование /data_types" + "\nУправляющие конструкции /Control_structures" + "\nМассивы и строки /arrays_and_strings" + "\nФункции и процедуры /functions_and_procedures" + "\nФайлы /files");
if (e.Message.Text == "/syntax")
{
InlineKeyboardMarkup myInlineKeyboard = new InlineKeyboardMarkup(
new InlineKeyboardButton[][]
{
new InlineKeyboardButton[] // First row
{
InlineKeyboardButton.WithCallbackData( // First Column
"Назад", // Button Name
"CallbackQuery1" // Answer you'll recieve
),
InlineKeyboardButton.WithCallbackData( //Second column
"Далее", // Button Name
"CallbackQuery2" // Answer you'll recieve
)
}
}
);
// Отправляем сообщение с кнопками inline
await botClient.SendTextMessageAsync(e.Message.Chat.Id, "Текст сообщения", replyMarkup: myInlineKeyboard);
botClient.OnCallbackQuery += async (object sc, CallbackQueryEventArgs ev) =>
{
if (ev.CallbackQuery.Data == "CallbackQuery1")
{
// Изменяем текст сообщения на "Текст сообщения - Назад"
await botClient.EditMessageTextAsync(
chatId: ev.CallbackQuery.Message.Chat.Id,
messageId: ev.CallbackQuery.Message.MessageId,
text: "Текст сообщения - Назад",
replyMarkup: myInlineKeyboard);
}
else if (ev.CallbackQuery.Data == "CallbackQuery2")
{
// Изменяем текст сообщения на "Текст сообщения - Далее"
await botClient.EditMessageTextAsync(
chatId: ev.CallbackQuery.Message.Chat.Id,
messageId: ev.CallbackQuery.Message.MessageId,
text: "Текст сообщения - Далее",
replyMarkup: myInlineKeyboard);
}
};
if (e.Message.Text == "/data_types") { }
if (e.Message.Text == "/control_structures") { }
if (e.Message.Text == "/arrays_and_strings") { }
if (e.Message.Text == "/functions_and_procedures") { }
if (e.Message.Text == "/control_structures") { }
if (e.Message.Text == "/files") { }
}
}
}
}
}
}