コード例 #1
0
ファイル: Program.cs プロジェクト: teox86/raccolta-bot
        private static List<GiornoRaccolta> ReadFromCsv()
        {
            List<GiornoRaccolta> res = new List<GiornoRaccolta>();

            using (var reader = new StreamReader(@"calendario_raccolta.csv"))
            {
                while (!reader.EndOfStream)
                {
                    var line = reader.ReadLine();
                    GiornoRaccolta gr = new GiornoRaccolta();

                    var values = line.Split(',');

                    gr.Giorno = DateTime.Parse(values[0]);

                    for (int i = 1; i < values.Length; i++)
                    {
                        gr.AggiungiRaccolta(values[i]);
                    }

                    res.Add(gr);
                }
            }

            return res;
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: teox86/raccolta-bot
        private static GiornoRaccolta GetRaccolta(int days)
        {
            if (Calendario == null)
                Calendario = ReadFromCsv();

            GiornoRaccolta raccolta = Calendario.Where(x => x.Giorno == DateTime.Today.AddDays(days)).FirstOrDefault();

            return raccolta;
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: teox86/raccolta-bot
        private static string MsgRaccoltaTraXGiorni(int days)
        {
            GiornoRaccolta tomorrow = GetRaccolta(days);

            string resp = @"Nessuna info per domani";

            if (tomorrow != null)
            {
                if (tomorrow.Raccolta.Count == 0)
                    resp = @"Nessuna raccolta domani";
                else
                {
                    if (days == 1)
                        resp = @"Domani raccolta " + string.Join(",", tomorrow.Raccolta.ToArray());
                    else
                        resp = string.Format(@"Tra {0} giorni, raccolta {1}", days, string.Join(",", tomorrow.Raccolta.ToArray()));
                }
            }

            return resp;
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: teox86/raccolta-bot
        private static async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs)
        {
            List<RegisteredUsers> listUsers = JsonConvert.DeserializeObject<List<RegisteredUsers>>(File.ReadAllText(UsersFile));

            var message = messageEventArgs.Message;

            if (message == null || message.Type != MessageType.Text) return;

            switch (message.Text.Split(' ').First())
            {
                //// send inline keyboard
                //case "/inline":
                //    await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing);

                //    await Task.Delay(500); // simulate longer running task

                //    var inlineKeyboard = new InlineKeyboardMarkup(new[]
                //    {
                //        new [] // first row
                //        {
                //            InlineKeyboardButton.WithCallbackData("1.1"),
                //            InlineKeyboardButton.WithCallbackData("1.2"),
                //        },
                //        new [] // second row
                //        {
                //            InlineKeyboardButton.WithCallbackData("2.1"),
                //            InlineKeyboardButton.WithCallbackData("2.2"),
                //        }
                //    });

                //    await Bot.SendTextMessageAsync(
                //        message.Chat.Id,
                //        "Choose",
                //        replyMarkup: inlineKeyboard);
                //    break;

                //// send custom keyboard
                //case "/keyboard":
                //    ReplyKeyboardMarkup ReplyKeyboard = new[]
                //    {
                //        new[] { "1.1", "1.2" },
                //        new[] { "2.1", "2.2" },
                //    };

                //    await Bot.SendTextMessageAsync(
                //        message.Chat.Id,
                //        "Choose",
                //        replyMarkup: ReplyKeyboard);
                //    break;

                //// send a photo
                //case "/photo":
                //    await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.UploadPhoto);

                //    const string file = @"Files/tux.png";

                //    var fileName = file.Split(Path.DirectorySeparatorChar).Last();

                //    using (var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read))
                //    {
                //        await Bot.SendPhotoAsync(
                //            message.Chat.Id,
                //            fileStream,
                //            "Nice Picture");
                //    }
                //    break;

                //// request location or contact
                //case "/request":
                //    var RequestReplyKeyboard = new ReplyKeyboardMarkup(new[]
                //    {
                //        KeyboardButton.WithRequestLocation("Location"),
                //        KeyboardButton.WithRequestContact("Contact"),
                //    });

                //    await Bot.SendTextMessageAsync(
                //        message.Chat.Id,
                //        "Who or Where are you?",
                //        replyMarkup: RequestReplyKeyboard);
                //    break;

                case "/register":

                    string msg = @"Utente gia' registrato";

                    if (listUsers.Where(x=> x.ChatID == message.Chat.Id.ToString()).FirstOrDefault() == null)
                    {
                        listUsers.Add(new RegisteredUsers() { ChatID = message.Chat.Id.ToString() });
                        msg = @"Utente registrato con successo";
                        File.WriteAllText(UsersFile, JsonConvert.SerializeObject(listUsers));
                    }

                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        msg,
                        replyMarkup: new ReplyKeyboardRemove());
                    break;

                case "/unregister":

                    msg = @"Utente non presente";

                    if (listUsers.Where(x => x.ChatID == message.Chat.Id.ToString()).FirstOrDefault() != null)
                    {
                        listUsers.RemoveAll(x => x.ChatID == message.Chat.Id.ToString());
                        msg = @"Utente rimosso dal sistema";
                        File.WriteAllText(UsersFile, JsonConvert.SerializeObject(listUsers));
                    }

                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        msg,
                        replyMarkup: new ReplyKeyboardRemove());
                    break;

                case "/domani":

                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        MsgRaccoltaTraXGiorni(1),
                        replyMarkup: new ReplyKeyboardRemove());

                    break;

                case "/tra":

                    var args = message.Text.Split(' ');
                    int days = 0;

                    string res = "Uso: /tra X";

                    if (args.Length == 2 && Int32.TryParse(args[1], out days))
                        res = MsgRaccoltaTraXGiorni(days);

                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        res,
                        replyMarkup: new ReplyKeyboardRemove());

                    break;

                case "/prossime":

                    var culture = new System.Globalization.CultureInfo("it-IT");

                    string nxt = "";

                    for (int i = 1; i < 8; i++)
                    {
                        GiornoRaccolta gr = GetRaccolta(i);
                        if (gr.Raccolta.Count > 0)
                            nxt += string.Format("{0} raccolta {1}",
                                culture.DateTimeFormat.GetDayName(DateTime.Today.AddDays(i).DayOfWeek), string.Join(",", gr.Raccolta.ToArray())) + Environment.NewLine;
                        else
                            nxt += string.Format("{0}",
                                culture.DateTimeFormat.GetDayName(DateTime.Today.AddDays(i).DayOfWeek)) + Environment.NewLine;
                    }

                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        nxt,
                        replyMarkup: new ReplyKeyboardRemove());

                    break;

                default:
                    const string usage = @"
Usage:
/register   - Ricevi notifiche
/unregister - Silenzia notifiche
/domani - Raccolta di domani
/prossime - Prossime raccolte";

                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        usage,
                        replyMarkup: new ReplyKeyboardRemove());
                    break;
            }
        }