コード例 #1
0
ファイル: Program.cs プロジェクト: pacdaemon/telegram-bot-pof
		static async Task Run()
		{
			var Bot = new Api(ConfigurationManager.AppSettings ["telegramAccessToken"]);
			var me = await Bot.GetMe();
			Console.WriteLine("Hello my name is {0}", me.Username);
			var offset = 0;

			while (true)
			{
				var updates = await Bot.GetUpdates(offset);
				foreach (var update in updates)
				{
					if (update.Message.Type == MessageType.TextMessage)
					{
						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);
					}
						
					offset = update.Id + 1;
				}

				await Task.Delay(1000);
			}
		}
コード例 #2
0
ファイル: Program.cs プロジェクト: IgorDemidov/TelegramBot
        static async Task Run()
        {
            var bot = new Api("143276555:AAFof83sERR_JyfrZsRzCXgDV_-mPdhiy3U");
            var weatherApiKey = "ec259b32688dc1c1d087ebc30cbff9ed";
            var me = await bot.GetMe();

            Console.WriteLine("Hello my name is {0}", me.Username);

            var offset = 0;

            while (true)
            {
                var updates = await bot.GetUpdates(offset);

                foreach (var update in updates)
                {
                    if (update.Message.Type == MessageType.TextMessage)
                    {
                        var inputMessage = update.Message.Text;
                        if (inputMessage.StartsWith("/weather"))
                        {
                            var messageParts = inputMessage.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                            var city = messageParts.Length == 1 ? "Minsk" : messageParts.Skip(1).First();
                            WebUtility.UrlEncode(city);
                            string url = string.Format("http://api.openweathermap.org/data/2.5/weather?q={0}&APPID={1}&units=metric", city, weatherApiKey);
                            WebRequest request = WebRequest.Create(url);
                            WebResponse response = request.GetResponse();
                            using (var streamReader = new StreamReader(response.GetResponseStream()))
                            {
                                string responseString = streamReader.ReadToEnd();

                                Console.WriteLine(responseString);
                                JObject joResponse = JObject.Parse(responseString);
                                JObject main = (JObject)joResponse["main"];
                                double temp = (double)main["temp"];
                                JObject weather = (JObject)joResponse["weather"][0];
                                string description = (string)weather["description"];
                                string cityName = (string)joResponse["name"];

                                Console.WriteLine(string.Format("temp is: {0}", temp));

                                var message = "In " + cityName + " " + description + " and the temperature is " + temp.ToString("+#;-#") + "°C";

                                var t = await bot.SendTextMessage(update.Message.Chat.Id, message);
                                Console.WriteLine("Echo Message: {0}", message);
                            }
                        }
                        else
                        {
                            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);
                        }
                    }

                    offset = update.Id + 1;
                }

                await Task.Delay(1000);
            }
        }
コード例 #3
0
ファイル: Form1.cs プロジェクト: vainamov/FestivalSupport
        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);
            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: arghand/TelegramBot
        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); }

            //}
        }
コード例 #5
0
        public string GetResponceText(string request, Api bot, Update update)
        {
            string[] splitedRequest = request.Split(' ');
            string responseText = "";
            switch (splitedRequest[0])
            {
                case "/weather":
                    {
                        switch (splitedRequest.Length)
                        {
                            case 1:
                                responseText = BuiltWeatherResponce();
                                break;
                            case 2:
                                responseText = BuiltWeatherResponce(splitedRequest[1]);
                                break;
                                //case 2:responseText = Built___Response(splitedRequest[1], splitedRequest[2]);
                                //    break;
                        }

                    }
                    break;
                case "/task":
                    responseText = BuiltTaskResponse(request);
                    break;
                case "/AI":
                    {
                        bot.SendChatAction(update.Message.Chat.Id, ChatAction.Typing);
                        Task.Delay(2000);
                        responseText = BuiltArtifitialIntelegenceResponse(request);
                    }

                    break;
            }

            return responseText.Equals("") ? "чаво?" : responseText;
        }