예제 #1
0
        private static void RecieveUpdates(object stateInfo)
        {
            GetUpdatesRequest updateOpts = new GetUpdatesRequest();
            updateOpts.Offset = Properties.Settings.Default.LastReadMessage;
            GetUpdatesResponse response = ApiAccess.GetUpdates(updateOpts);
            List<UpdateResponse> updates = response.Result;

            if (response.Ok)
            {
                if (updates.Count > 0)
                {
                    foreach (UpdateResponse update in updates)
                    {
                        if (update.Message.Text != "" && update.Message.Text != null)
                        {
                            if (Properties.Settings.Default.Verbose)
                            {
                                string date = "";
                                if (update.Message.Date.HasValue)
                                {
                                    date = update.Message.Date.Value.ToShortTimeString() + " ";
                                }
                                Console.WriteLine(date +
                                    update.Message.From.FirstName + ":" +
                                    update.Message.Text);
                            }
                            if (update.Message.Text.StartsWith("/") == false)
                            {
                                if (ChatKeys.Contains(update.Message.Chat.Id))
                                {
                                    Chats[update.Message.Chat.Id].Chain.Feed(update.Message.Text);
                                }
                            }
                            else
                            {
                                if (update.Message.Text.ToLower().StartsWith("/subscribe"))
                                {
                                    if (ChatKeys.Contains(update.Message.Chat.Id) == false)
                                    {
                                        Chat subscriber = new Chat(update.Message.Chat.Id);
                                        try
                                        {
                                            subscriber.Load();
                                        }
                                        catch (Exception)
                                        {
                                            subscriber.Chain = new Markov();
                                        }
                                        Chats.Add(subscriber.ChatID, subscriber);
                                        ChatKeys.Add(subscriber.ChatID);

                                        SendTgMessage(update.Message.Chat.Id, "Congrats! You are now " +
                                            "subscribed to my wisdom!");
                                    }
                                    else
                                    {
                                        SendTgMessage(update.Message.Chat.Id, "Chat already subscribed.");
                                    }
                                }
                                else if (update.Message.Text.ToLower().StartsWith("/unsubscribe"))
                                {
                                    if (ChatKeys.Contains(update.Message.Chat.Id))
                                    {
                                        ChatKeys.Remove(update.Message.Chat.Id);
                                        Chats.Remove(update.Message.Chat.Id);
                                        SendTgMessage(update.Message.Chat.Id, "This chat has successfuly been unsubscribed.");
                                    }
                                    else
                                    {
                                        SendTgMessage(update.Message.Chat.Id, "Chat is not subsrcibed to begin with!\n" +
                                            "...How dare you!");
                                    }
                                }
                            }
                        }
                    }
                    Properties.Settings.Default.LastReadMessage =
                    updates[updates.Count - 1].UpdateId + 1;
                    Properties.Settings.Default.Save();
                }
            }
        }
예제 #2
0
 public GetUpdatesResponse GetUpdates(GetUpdatesRequest getUpdatesRequest)
 {
     return GetUpdatesResponse.Parse(ExecuteAction(getUpdatesRequest));
 }
예제 #3
0
 public GetUpdatesResponse GetUpdates(GetUpdatesRequest getUpdatesRequest)
 {
     Log.Info(nameof(GetUpdates));
     return GetUpdatesResponse.Parse(ExecuteAction(getUpdatesRequest));
 }