public static string RandomString(int length) { fs = JsonConvert.DeserializeObject<FestivalSettings>(System.IO.File.ReadAllText(settingsPath)); string chars = fs.tokenChars; var random = new Random(); return new string(Enumerable.Repeat(chars, length) .Select(s => s[random.Next(s.Length)]).ToArray()); }
public static string RandomString(int length) { fs = JsonConvert.DeserializeObject <FestivalSettings>(System.IO.File.ReadAllText(settingsPath)); string chars = fs.tokenChars; var random = new Random(); return(new string(Enumerable.Repeat(chars, length) .Select(s => s[random.Next(s.Length)]).ToArray())); }
private void button3_Click(object sender, EventArgs e) { FestivalSettings fs = new FestivalSettings(); fs.token = textBox1.Text; fs.showTyping = checkBox3.Checked; fs.typingDuration = (int)numericUpDown1.Value; fs.tokenLength = (int)numericUpDown2.Value; fs.tokenChars = textBox8.Text; fs.startMessage = textBox2.Text; fs.helpMessage = textBox3.Text; fs.showSupportMessage = checkBox1.Checked; fs.supportMessage = textBox5.Text; fs.topicKeyboard = textBox4.Text; fs.showSupportEndMessage = checkBox2.Checked; fs.supportEndMessage = textBox6.Text; System.IO.File.WriteAllText(Form1.settingsPath, JsonConvert.SerializeObject(fs)); Form1.fs = JsonConvert.DeserializeObject <FestivalSettings>(System.IO.File.ReadAllText(Form1.settingsPath)); RefreshSettings(); }
private void Form1_Load(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Einstellungen (*.json)|*.json"; if (ofd.ShowDialog() == DialogResult.OK) { settingsPath = ofd.FileName; fs = JsonConvert.DeserializeObject <FestivalSettings>(System.IO.File.ReadAllText(settingsPath)); if (string.IsNullOrEmpty(fs.token)) { button1.Enabled = false; } this.BringToFront(); } else { if (MessageBox.Show("Wollen sie eine leere Datei generieren und laden?", "Festival Support", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Default-Einstellungen (*.json)|*.json"; sfd.FileName = "default"; if (sfd.ShowDialog() == DialogResult.OK) { fs = new FestivalSettings(); System.IO.File.WriteAllText(sfd.FileName, JsonConvert.SerializeObject(fs)); button1.Enabled = false; } else { Application.Exit(); } } else { Application.Exit(); } } }
private void button3_Click(object sender, EventArgs e) { FestivalSettings fs = new FestivalSettings(); fs.token = textBox1.Text; fs.showTyping = checkBox3.Checked; fs.typingDuration = (int)numericUpDown1.Value; fs.tokenLength = (int)numericUpDown2.Value; fs.tokenChars = textBox8.Text; fs.startMessage = textBox2.Text; fs.helpMessage = textBox3.Text; fs.showSupportMessage = checkBox1.Checked; fs.supportMessage = textBox5.Text; fs.topicKeyboard = textBox4.Text; fs.showSupportEndMessage = checkBox2.Checked; fs.supportEndMessage = textBox6.Text; System.IO.File.WriteAllText(Form1.settingsPath, JsonConvert.SerializeObject(fs)); Form1.fs = JsonConvert.DeserializeObject<FestivalSettings>(System.IO.File.ReadAllText(Form1.settingsPath)); RefreshSettings(); }
private void Form1_Load(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Einstellungen (*.json)|*.json"; if (ofd.ShowDialog() == DialogResult.OK) { settingsPath = ofd.FileName; fs = JsonConvert.DeserializeObject<FestivalSettings>(System.IO.File.ReadAllText(settingsPath)); if (string.IsNullOrEmpty(fs.token)) { button1.Enabled = false; } this.BringToFront(); } else { if (MessageBox.Show("Wollen sie eine leere Datei generieren und laden?", "Festival Support", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Default-Einstellungen (*.json)|*.json"; sfd.FileName = "default"; if (sfd.ShowDialog() == DialogResult.OK) { fs = new FestivalSettings(); System.IO.File.WriteAllText(sfd.FileName, JsonConvert.SerializeObject(fs)); button1.Enabled = false; } else { Application.Exit(); } } else { Application.Exit(); } } }
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() { 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); } }