public static async Task RunOrchestrator(
            [OrchestrationTrigger] IDurableOrchestrationContext context,
            [Blob(Constants.ReactionsBlobPath)] string reactionsString,
            [Blob(Constants.ChatSettingsBlobPath)] string chatSettingsString,
            [Blob(Constants.DataBlobPath)] CloudBlobContainer chatSettingsOutput,
            ILogger log)
        {
            _log     = log;
            _context = context;

            try
            {
                _bot          = new TelegramBotClient(Configuration.Instance.BotToken);
                _reactions    = JsonConvert.DeserializeObject <ReactionsList>(reactionsString);
                _chatSettings = JsonConvert.DeserializeObject <ChatSettings>(chatSettingsString);

                var me = await _bot.GetMeAsync();

                if (me == null)
                {
                    throw new Exception("Bot initialisation failed");
                }

                var message = context.GetInput <Message>();
                var reply   = await BotOnMessageReceived(message);

                await _bot.MakeRequestAsync(reply);
            }
            catch (Exception e)
            {
                log.LogError(e, "Error while running output function");
            }
        }
Example #2
0
 public MessageAdapterFactory(TelegramBotClient bot, ChatSettings chatSettings, ReactionsList reactions, BoyanList boyans)
 {
     _bot          = bot;
     _chatSettings = chatSettings;
     _reactions    = reactions;
     _boyans       = boyans;
 }
Example #3
0
        private static bool IsReaction(Message message, ReactionsList reactionsList, out Reaction reaction)
        {
            var messageText = message.Text?.ToLower() ?? string.Empty;

            reaction = reactionsList.Items.FirstOrDefault(x => x.Triggers.Any(messageText.Contains));

            if (reaction == null)
            {
                return(false);
            }
            if (reaction.IsMentionReply && HelperMethods.MentionsBot(message) == false)
            {
                return(false);
            }
            if (reaction.IsAlwaysReply == false && HelperMethods.YesOrNo() == false)
            {
                return(false);
            }

            return(true);
        }
Example #4
0
        private static void LoadReactions()
        {
            var reactionsString = ReadSettings("reactions.json");

            _reactions = JsonConvert.DeserializeObject <ReactionsList>(reactionsString) ?? new ReactionsList();
        }