diff --git a/Program.cs b/Program.cs index 8c4b044..fcbf366 100755 --- a/Program.cs +++ b/Program.cs @@ -21,6 +21,7 @@ public class MastodonBot }); var logger = loggerFactory.CreateLogger(); + // Read environment variables var config = ConfigData.fetchData(); if (config==null) { @@ -29,7 +30,6 @@ public class MastodonBot } // Setup DB - Console.WriteLine("DB name: " + config.DB_NAME); var backupDb = await DbInitializer.SetupJsonDb(config.DB_NAME); if (backupDb == null) { @@ -40,7 +40,6 @@ public class MastodonBot logger.LogInformation("DB setup done"); // Setup bot - var bot = new TelegramBotClient(config.BOT_TOKEN); var me = await bot.GetMe(); @@ -57,7 +56,7 @@ public class MastodonBot switch (update) { case { CallbackQuery: { } callbackQuery }: { - if(callbackQuery.Data == "new_random"){ await HandleStartMessage.HandleStartMessageAsync(callbackQuery.Message, bot, backupDb, logger,callbackQuery); break;} + if(callbackQuery.Data == "new_random"){ await HandleStartMessage.HandleStartMessageAsync(callbackQuery.Message, bot, db, logger,callbackQuery); break;} else {await HandlePostAction.HandleCallbackQuery(callbackQuery, backupDb, bot, logger); break;} @@ -69,9 +68,9 @@ public class MastodonBot // Handle bot messages async Task OnMessage(Message message, UpdateType type) { - if (message.Text == "/start") + if (message.Text == "/start" && message.Chat.Type == ChatType.Private) { - await HandleStartMessage.HandleStartMessageAsync(message,bot, backupDb, logger); + await HandleStartMessage.HandleStartMessageAsync(message,bot, db, logger); } else if (message.Text == "/backup") { @@ -80,7 +79,7 @@ public class MastodonBot // Send a message to prompt user to send /start and recieve their cat photo only if its from a telegram user and not a channel else if (message.Chat.Type == ChatType.Private) { - await HandleStartMessage.HandleStartMessageAsync(message, bot, backupDb, logger); + await HandleStartMessage.HandleStartMessageAsync(message, bot, db, logger); } } diff --git a/Services/DbInitializer.cs b/Services/DbInitializer.cs index 738f412..74f9e8a 100755 --- a/Services/DbInitializer.cs +++ b/Services/DbInitializer.cs @@ -14,7 +14,7 @@ namespace mstdnCats.Services try { // Initialize Backup DB - var store = new DataStore($"{_dbname + "_BK"}.json", minifyJson: true); + var store = new DataStore($"./data/{_dbname + "_BK"}.json", minifyJson: true); collection = store.GetCollection(); } catch @@ -26,7 +26,7 @@ namespace mstdnCats.Services return Task.FromResult(collection); } - public static Task SetupDb(string mongoDbConnectionString, string dbName) + public static Task> SetupDb(string mongoDbConnectionString, string dbName) { if (mongoDbConnectionString == null) { @@ -36,7 +36,7 @@ namespace mstdnCats.Services try { var client = new MongoClient(mongoDbConnectionString); - var database = client.GetDatabase(dbName); + var database = client.GetDatabase(dbName).GetCollection("posts"); return Task.FromResult(database); } catch (Exception ex) diff --git a/Services/HandleDbBackup.cs b/Services/HandleDbBackup.cs index e1033e5..c3f1542 100755 --- a/Services/HandleDbBackup.cs +++ b/Services/HandleDbBackup.cs @@ -13,8 +13,8 @@ public class HandleDbBackup { logger?.LogInformation("Backup requested"); - await using Stream stream = System.IO.File.OpenRead("./" + dbname+".json"); - var message = await _bot.SendDocument(adminId, document: InputFile.FromStream(stream, dbname+".json"), + await using Stream stream = System.IO.File.OpenRead("./data/" + dbname+"_BK.json"); + var message = await _bot.SendDocument(adminId, document: InputFile.FromStream(stream, dbname+"_BK.json"), caption: "Backup of " + dbname + "\nCreated at " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss" + "\nCurrent post count: " + _db.AsQueryable().Count()), parseMode: ParseMode.Html); logger?.LogInformation("Backup sent"); diff --git a/Services/HandleStartMessage.cs b/Services/HandleStartMessage.cs index e9a11a0..5aa9643 100755 --- a/Services/HandleStartMessage.cs +++ b/Services/HandleStartMessage.cs @@ -1,5 +1,6 @@ using JsonFlatFileDataStore; using Microsoft.Extensions.Logging; +using MongoDB.Driver; using mstdnCats.Models; using Telegram.Bot; using Telegram.Bot.Types; @@ -10,7 +11,7 @@ namespace CatsOfMastodonBot.Services { public class HandleStartMessage { - public static async Task HandleStartMessageAsync(Message message, TelegramBotClient _bot, IDocumentCollection _db, ILogger? logger, CallbackQuery callbackQuery = null) + public static async Task HandleStartMessageAsync(Message message, TelegramBotClient _bot, IMongoCollection _db, ILogger? logger, CallbackQuery callbackQuery = null) { logger?.LogInformation("Start message received, trigger source: " + (callbackQuery != null ? "Callback" : "Start command")); diff --git a/mstdnCats.csproj b/mstdnCats.csproj index dd6637d..2b0d7af 100755 --- a/mstdnCats.csproj +++ b/mstdnCats.csproj @@ -12,7 +12,7 @@ - +