diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e42893a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+config.json
+bin/
+obj/
\ No newline at end of file
diff --git a/.idea/.idea.TelegramRemindMe/.idea/contentModel.xml b/.idea/.idea.TelegramRemindMe/.idea/contentModel.xml
deleted file mode 100644
index 371a99c..0000000
--- a/.idea/.idea.TelegramRemindMe/.idea/contentModel.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.TelegramRemindMe/.idea/indexLayout.xml b/.idea/.idea.TelegramRemindMe/.idea/indexLayout.xml
deleted file mode 100644
index f1feadf..0000000
--- a/.idea/.idea.TelegramRemindMe/.idea/indexLayout.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.TelegramRemindMe/.idea/modules.xml b/.idea/.idea.TelegramRemindMe/.idea/modules.xml
deleted file mode 100644
index 2326cb0..0000000
--- a/.idea/.idea.TelegramRemindMe/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.TelegramRemindMe/.idea/vcs.xml b/.idea/.idea.TelegramRemindMe/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/.idea.TelegramRemindMe/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.TelegramRemindMe/.idea/workspace.xml b/.idea/.idea.TelegramRemindMe/.idea/workspace.xml
deleted file mode 100644
index bfd1d55..0000000
--- a/.idea/.idea.TelegramRemindMe/.idea/workspace.xml
+++ /dev/null
@@ -1,398 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- received action
- successfi
- list task
- reminders
- delete
- success
- task added succ
- Set a task as completed
- foreach
- isworkingm
- complete
- invalid inp
- == 0
- set a task
- 5000
- doo
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- DEFINITION_ORDER
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1518017570500
-
-
- 1518017570500
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.TelegramRemindMe/riderModule.iml b/.idea/.idea.TelegramRemindMe/riderModule.iml
deleted file mode 100644
index 1a4e0d9..0000000
--- a/.idea/.idea.TelegramRemindMe/riderModule.iml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ReminderBot.cs b/ReminderBot.cs
index 6fd672e..9013b90 100644
--- a/ReminderBot.cs
+++ b/ReminderBot.cs
@@ -1,4 +1,5 @@
-using System;
+using
+ System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -8,12 +9,13 @@ using Telegram.Bot.Args;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
using Telegram.Bot.Types.ReplyMarkups;
+using Newtonsoft.Json;
namespace TelegramRemindMe
{
public static class ReminderBot
{
- private static readonly List Chats = new List();
+ private static List _chats = new List();
private static readonly TelegramBotClient Bot =
new TelegramBotClient("511835815:AAHewCgiXep58wF6tDWIW133LhfqjCbb8c4");
@@ -26,7 +28,9 @@ namespace TelegramRemindMe
//Bot.OnInlineQuery += BotOnInlineQueryReceived;
//Bot.OnInlineResultChosen += BotOnChosenInlineResultReceived;
Bot.OnReceiveError += BotOnReceiveError;
-
+ if(!System.IO.File.Exists("config.json"))
+ SaveToJson(_chats);
+ _chats = ReadJson();
var me = Bot.GetMeAsync().Result;
Console.Title = me.Username;
@@ -43,10 +47,10 @@ namespace TelegramRemindMe
if (message == null || message.Type != MessageType.Text) return;
- if (Chats.Find(e => e.ChatId == messageEventArgs.Message.Chat.Id) == null)
- Chats.Add(new ChatEntry(messageEventArgs.Message.Chat.Id));
+ if (_chats.Find(e => e.ChatId == messageEventArgs.Message.Chat.Id) == null)
+ _chats.Add(new ChatEntry(messageEventArgs.Message.Chat.Id));
- var currentChat = Chats.Find(e => e.ChatId == messageEventArgs.Message.Chat.Id);
+ var currentChat = _chats.Find(e => e.ChatId == messageEventArgs.Message.Chat.Id);
switch (currentChat.status)
{
@@ -103,10 +107,10 @@ namespace TelegramRemindMe
Console.WriteLine(
$"Received action request from @{callbackQueryEventArgs.CallbackQuery.Message.Chat.Username}: {callbackQueryEventArgs.CallbackQuery.Data}");
- if (Chats.Find(e => e.ChatId == callbackQueryEventArgs.CallbackQuery.Message.Chat.Id) == null)
- Chats.Add(new ChatEntry(callbackQueryEventArgs.CallbackQuery.Message.Chat.Id));
+ if (_chats.Find(e => e.ChatId == callbackQueryEventArgs.CallbackQuery.Message.Chat.Id) == null)
+ _chats.Add(new ChatEntry(callbackQueryEventArgs.CallbackQuery.Message.Chat.Id));
- var currentChat = Chats.Find(e => e.ChatId == callbackQueryEventArgs.CallbackQuery.Message.Chat.Id);
+ var currentChat = _chats.Find(e => e.ChatId == callbackQueryEventArgs.CallbackQuery.Message.Chat.Id);
switch (callbackQueryEventArgs.CallbackQuery.Data)
{
@@ -140,14 +144,16 @@ namespace TelegramRemindMe
currentChat.IsWorkingMessage = true;
currentChat.WorkingMsg = callbackQueryEventArgs.CallbackQuery.Message.MessageId;
SendOverview(currentChat);
- currentChat.WorkingMsg = callbackQueryEventArgs.CallbackQuery.Message.MessageId;Bot.AnswerCallbackQueryAsync(callbackQueryEventArgs.CallbackQuery.Id, "Showing all tasks");
+ currentChat.WorkingMsg = callbackQueryEventArgs.CallbackQuery.Message.MessageId;
+ await Bot.AnswerCallbackQueryAsync(callbackQueryEventArgs.CallbackQuery.Id, "Showing all tasks");
break;
case "Hide completed tasks":
currentChat.AllTasksShown = false;
currentChat.IsWorkingMessage = true;
currentChat.WorkingMsg = callbackQueryEventArgs.CallbackQuery.Message.MessageId;
SendOverview(currentChat);
- await Bot.AnswerCallbackQueryAsync(callbackQueryEventArgs.CallbackQuery.Id, "Showing only uncompleted tasks");
+ await Bot.AnswerCallbackQueryAsync(callbackQueryEventArgs.CallbackQuery.Id,
+ "Showing only uncompleted tasks");
break;
default:
Console.WriteLine("Wat (Unknown callback action)");
@@ -160,21 +166,24 @@ namespace TelegramRemindMe
private static async void SendOverview(ChatEntry chat, string prefixLine = "")
{
+ SaveToJson(_chats);
var actionKeyboard = new InlineKeyboardMarkup(new[]
{
new[]
{
InlineKeyboardButton.WithCallbackData("Add a new task"),
- InlineKeyboardButton.WithCallbackData("Set a task as completed"),
+ InlineKeyboardButton.WithCallbackData("Set a task as completed"),
},
new[]
{
- InlineKeyboardButton.WithCallbackData(chat.AllTasksShown ? "Hide completed tasks" : "Show all tasks")
+ InlineKeyboardButton.WithCallbackData(
+ chat.AllTasksShown ? "Hide completed tasks" : "Show all tasks")
}
});
await Bot.SendChatActionAsync(chat.ChatId, ChatAction.Typing);
+ //TODO: why is this firing when workingmsg already deleted?
if (chat.IsWorkingMessage)
await Bot.DeleteMessageAsync(chat.ChatId, chat.WorkingMsg);
@@ -228,5 +237,38 @@ namespace TelegramRemindMe
receiveErrorEventArgs.ApiRequestException.ErrorCode,
receiveErrorEventArgs.ApiRequestException.Message);
}
+
+ private static void SaveToJson(List chats)
+ {
+ var str = JsonConvert.SerializeObject(chats);
+ while (true)
+ {
+ try
+ {
+ System.IO.File.WriteAllText("config.json", str);
+ break;
+ }
+ catch
+ {
+ Console.WriteLine("Unable to write to config.json, retrying...");
+ }
+ }
+ }
+
+ private static List ReadJson()
+ {
+ while (true)
+ {
+ try
+ {
+ var str = System.IO.File.ReadAllText("config.json");
+ return JsonConvert.DeserializeObject>(str);
+ }
+ catch
+ {
+ Console.WriteLine("Unable to read from config.json, retrying...");
+ }
+ }
+ }
}
}
\ No newline at end of file