static async Task Run() { fs = JsonConvert.DeserializeObject<FestivalSettings>(System.IO.File.ReadAllText(settingsPath)); Bot = new Api(fs.token); var me = await Bot.GetMe(); Console.WriteLine("Connection to account \"{0}\" established.", me.Username); var offset = 0; while (true) { fs = JsonConvert.DeserializeObject<FestivalSettings>(System.IO.File.ReadAllText(settingsPath)); var updates = await Bot.GetUpdates(offset); foreach (var update in updates) { if (update.Message.Type == MessageType.TextMessage) { Session ps = new Session(); foreach (Session ses in sessions) { if (ses.User == update.Message.Chat.Username) { ps = ses; } } if (ps.Live) { //Forward users message to console var f = (Form1)Application.OpenForms[0]; f.AddUserMessage(update.Message.Chat.Username + ": " + update.Message.Text, "#1ED760"); } else { if (update.Message.Text == "/start") { //Typing... if (fs.showTyping) { await Bot.SendChatAction(update.Message.Chat.Id, ChatAction.Typing); await Task.Delay(1000 * fs.typingDuration); } //Generate token Token = RandomString(fs.tokenLength); //Generate and add session Session s = new Session(update.Message.Chat.Username, Token, sessions.Count.ToString(), update.Message.Chat.Id); sessions.Add(s); //Send message var t = await Bot.SendTextMessage(update.Message.Chat.Id, ReplaceVars(fs.startMessage, s)); } else if (update.Message.Text == "/help") { //Typing... if (fs.showTyping) { await Bot.SendChatAction(update.Message.Chat.Id, ChatAction.Typing); await Task.Delay(1000 * fs.typingDuration); } //Send message var t = await Bot.SendTextMessage(update.Message.Chat.Id, ReplaceVars(fs.helpMessage)); } else if (update.Message.Text == "/topic") { //Typing... if (fs.showTyping) { await Bot.SendChatAction(update.Message.Chat.Id, ChatAction.Typing); await Task.Delay(1000 * fs.typingDuration); } //Token-keyboard var to = new ReplyKeyboardMarkup(); to.Keyboard = new string[][] { new string[] { Token } }; to.OneTimeKeyboard = true; to.ResizeKeyboard = true; //Send token-question var tokenans = await Bot.SendTextMessage(update.Message.Chat.Id, "Gib bitte dein Anfrage-Token ein.", false, 0, to); //Ignore latest offset = update.Id + 1; //Wait for answer var tanswer = await Bot.GetUpdates(offset); while (tanswer.Length < 1) { tanswer = await Bot.GetUpdates(offset); } //Check for session Session s = new Session(); foreach (Session ses in sessions) { if (ses.Token == tanswer[0].Message.Text && ses.User == update.Message.Chat.Username) { s = ses; } } //Typing... if (fs.showTyping) { await Bot.SendChatAction(update.Message.Chat.Id, ChatAction.Typing); await Task.Delay(1000 * fs.typingDuration); } //Topic-keyboard // var r = new ReplyKeyboardMarkup(); // r.Keyboard = new string[][] { // new string[] { "SkrivaPrisma", "Polar" }, // new string[] { "Floe", "LockWatch" }, // new string[] { "Repo", "Website"} //}; // r.OneTimeKeyboard = true; // r.ResizeKeyboard = true; var r = FestivalSettingsHelper.ParseKeyboard(fs.topicKeyboard); //Send topic-question var t = await Bot.SendTextMessage(update.Message.Chat.Id, "Bitte wähle ein Problemthema.", false, 0, r); //Ignore latest offset = update.Id + 2; //Wait for answer var answer = await Bot.GetUpdates(offset); while (answer.Length < 1) { answer = await Bot.GetUpdates(offset); } //Assign result to session s.SetTopic(answer[0].Message.Text); //Typing... if (fs.showTyping) { await Bot.SendChatAction(update.Message.Chat.Id, ChatAction.Typing); await Task.Delay(1000 * fs.typingDuration); } //Echo var t2 = await Bot.SendTextMessage(answer[0].Message.Chat.Id, String.Format("Du hast \"{0}\" als Thema gewählt.", answer[0].Message.Text)); } else if (update.Message.Text == "/message") { //Typing... if (fs.showTyping) { await Bot.SendChatAction(update.Message.Chat.Id, ChatAction.Typing); await Task.Delay(1000 * fs.typingDuration); } //Token-keyboard var to = new ReplyKeyboardMarkup(); to.Keyboard = new string[][] { new string[] { Token } }; to.OneTimeKeyboard = true; to.ResizeKeyboard = true; //Send token-question var tokenans = await Bot.SendTextMessage(update.Message.Chat.Id, "Gib bitte dein Anfrage-Token ein.", false, 0, to); //Ignore latest offset = update.Id + 1; //Wait for answer var tanswer = await Bot.GetUpdates(offset); while (tanswer.Length < 1) { tanswer = await Bot.GetUpdates(offset); } //Check for session Session s = new Session(); foreach (Session ses in sessions) { if (ses.Token == tanswer[0].Message.Text && ses.User == update.Message.Chat.Username) { s = ses; } } //Typing... if (fs.showTyping) { await Bot.SendChatAction(update.Message.Chat.Id, ChatAction.Typing); await Task.Delay(1000 * fs.typingDuration); } //Send message-question var t = await Bot.SendTextMessage(update.Message.Chat.Id, "Bitte gib deine Nachricht ein."); //Ignore latest offset = update.Id + 2; //Wait for answer var answer = await Bot.GetUpdates(offset); while (answer.Length < 1) { answer = await Bot.GetUpdates(offset); } //Assign result to session s.SetMessage(answer[0].Message.Text); //Typing... if (fs.showTyping) { await Bot.SendChatAction(update.Message.Chat.Id, ChatAction.Typing); await Task.Delay(1000 * fs.typingDuration); } //Echo var t2 = await Bot.SendTextMessage(answer[answer.Length - 1].Message.Chat.Id, String.Format("Du hast uns \"{0}\" geschrieben.", answer[answer.Length - 1].Message.Text)); } else if (update.Message.Text == "/support") { //Typing... if (fs.showTyping) { await Bot.SendChatAction(update.Message.Chat.Id, ChatAction.Typing); await Task.Delay(1000 * fs.typingDuration); } //Token-keyboard var to = new ReplyKeyboardMarkup(); to.Keyboard = new string[][] { new string[] { Token } }; to.OneTimeKeyboard = true; to.ResizeKeyboard = true; //Send token-question var tokenans = await Bot.SendTextMessage(update.Message.Chat.Id, "Gib bitte dein Anfrage-Token ein.", false, 0, to); //Ignore latest offset = update.Id + 1; //Wait for answer var tanswer = await Bot.GetUpdates(offset); while (tanswer.Length < 1) { tanswer = await Bot.GetUpdates(offset); } //Check for session Session s = new Session(); foreach (Session ses in sessions) { if (ses.Token == tanswer[0].Message.Text && ses.User == update.Message.Chat.Username) { s = ses; } } //Submit session Console.WriteLine("===================="); Console.WriteLine("Id: " + s.Id); Console.WriteLine("Date: " + update.Message.Date.ToShortDateString() + " Time: " + update.Message.Date.ToShortTimeString()); Console.WriteLine("Token: " + s.Token); Console.WriteLine("User: "******"Topic: " + s.Topic); Console.WriteLine("Message: " + s.Message); Console.WriteLine("===================="); //Set support s.Support = true; //Refresh ListView var f = (Form1)Application.OpenForms[0]; System.Threading.ThreadStart startInfo = new System.Threading.ThreadStart(f.refreshSessions); System.Threading.Thread refresh = new System.Threading.Thread(startInfo); refresh.Start(); //Typing... if (fs.showTyping) { await Bot.SendChatAction(update.Message.Chat.Id, ChatAction.Typing); await Task.Delay(1000 * fs.typingDuration); } //Send message var t = await Bot.SendTextMessage(update.Message.Chat.Id, "Deine Support-Anfrage wurde uns übermittelt.\nBitte benutze für eine neue Anfrage zuerst den /start Befehl."); } else if (false) { var r = new ReplyKeyboardMarkup(); r.Keyboard = new string[][] { new string[] { "Ja", "Nein" } }; r.OneTimeKeyboard = true; r.ResizeKeyboard = true; var t = await Bot.SendTextMessage(update.Message.Chat.Id, "Hilfe erforderlich?", false, 0, r); } } } if (update.Message.Type == MessageType.PhotoMessage) { var file = await Bot.GetFile(update.Message.Photo.LastOrDefault()?.FileId); Console.WriteLine("Received Photo: {0}", file.FilePath); var filename = file.FileId + "." + file.FilePath.Split('.').Last(); using (var profileImageStream = File.Open(filename, FileMode.Create)) { await file.FileStream.CopyToAsync(profileImageStream); } } offset = update.Id + 1; } await Task.Delay(1000); } }
static async Task run() { var offset = 0; while (true) { var Bot = new Api("139410021:AAHoQsUYiH_NiHV0vutnDWSLy1JEslIibz0"); var updates = await Bot.GetUpdates(offset); foreach (var update in updates) { if (update.Message.Type == MessageType.TextMessage && update.Message.Text=="R") { await Bot.SendChatAction(update.Message.Chat.Id, ChatAction.Typing); //await Task.Delay(2000); var t = await Bot.SendTextMessage(update.Message.Chat.Id, update.Message.Text); Console.WriteLine("Echo Message: {0}", update.Message.Text); } if (update.Message.Type == MessageType.PhotoMessage) { var file = await Bot.GetFile(update.Message.Photo.LastOrDefault()?.FileId); Console.WriteLine("Received Photo: {0}", file.FilePath); var filename = file.FileId + "." + file.FilePath.Split('.').Last(); using (var profileImageStream = File.Open(filename, FileMode.Create)) { await file.FileStream.CopyToAsync(profileImageStream); } } offset = update.Id + 1; } //await Task.Delay(1000); } //while (true) //{ // try // { // var bot = new Telegram.Bot.Api("139410021:AAHoQsUYiH_NiHV0vutnDWSLy1JEslIibz0"); // int offsetId = 0; // var upds = await bot.GetUpdates();// offsetId); // //print(updates) // foreach (var update in upds) // { // switch (update.Message.ToString()) // { // case "S": // System.Console.WriteLine("start"); // break; // case "A": // System.Console.WriteLine("Answer PLS"); // break; // case "T": // System.Console.WriteLine("Answer Is TRUE"); // break; // case "F": // System.Console.WriteLine("Answer Is FALSE"); // break; // case "R": // System.Console.WriteLine("RegisterUser"); // registerUserByChatId(update.Message); // break; // } // //offset=update.message_id // System.Console.WriteLine("UpdateId=" + ("update.update_id").ToString()); // System.Console.WriteLine("Update.Message.Text=" + (update.Message.Text + (offsetId).ToString())); // System.Console.WriteLine(update); // //print(update.message) // //print(update) // offsetId = 2; // } // } // catch(ExecutionEngineException ex) // { System.Console.WriteLine(ex.Message); } //} }