Пример #1
0
        public async Task <string> Execute(CommandString cmd, MessageEventArgs messageEventArgs)
        {
            if (cmd.Parameters.Length < 1)
            {
                return(null);
            }
            var msg = messageEventArgs.Message;

            if (msg.Chat.Type != ChatType.Private)
            {
                return(null);
            }

            string name  = cmd.Parameters[0];
            string descr = name;

            if (cmd.Parameters.Length > 1)
            {
                descr = string.Join(' ', cmd.Parameters.Skip(1));
            }

            try
            {
                var topic = await db.CreateTopic(NamespacedId.Telegram(msg.From.Id), name, descr);

                return($"created {topic.Name}\n" +
                       $"readToken\n{topic.ReadToken}\n" +
                       $"writeToken\n{topic.WriteToken}\n" +
                       $"adminToken\n{topic.AdminToken}\n");
            }
            catch (MySqlException myDuplicate) when(myDuplicate.Number == 1062)
            {
                return($"topic {name} already exists");
            }
        }
Пример #2
0
        public async Task <string> Execute(CommandString cmd, MessageEventArgs messageEventArgs)
        {
            if (cmd.Parameters.Length < 1)
            {
                return(null);
            }

            if (!await CommandHelper.CheckAdministrator(bot, messageEventArgs.Message))
            {
                return(null);
            }

            var msg  = messageEventArgs.Message;
            var chat = NamespacedId.Telegram(msg.Chat.Id);

            var topicName = cmd.Parameters[0];
            int affected  = await db.RemoveSubscription(topicName, chat);

            if (affected >= 1)
            {
                return($"unsubscribed from {topicName}");
            }
            else
            {
                return($"could not find subscription for {topicName}");
            }
        }
Пример #3
0
        public async Task <string> Execute(CommandString cmd, MessageEventArgs messageEventArgs)
        {
            if (!await CommandHelper.CheckAdministrator(bot, messageEventArgs.Message))
            {
                return(null);
            }

            var msg    = messageEventArgs.Message;
            var chatid = msg.Chat.Id;
            var topics = await db.GetTopicsForChat(NamespacedId.Telegram(chatid));

            return(topics.Any()
                ? "Topics:\n" + string.Join("\n", topics)
                : "No subscriptions active.");
        }
Пример #4
0
        public async Task <string> Execute(CommandString cmd, MessageEventArgs args)
        {
            if (cmd.Parameters.Length < 1)
            {
                return(null);
            }

            if (!await CommandHelper.CheckAdministrator(bot, args.Message))
            {
                return(null);
            }

            var chat  = NamespacedId.Telegram(args.Message.Chat.Id);
            var token = cmd.Parameters[0];

            var topic = await db.GetTopicForSub(token, chat);

            if (topic == null)
            {
                return("topic not found");
            }
            else if (topic.Chat == chat)
            {
                return($"already subscribed to {topic.Name}");
            }
            else if (topic.ReadToken != token)
            {
                return("token mismatch");
            }
            else
            {
                await db.CreateSubscription(topic.TopicId, chat);

                return($"subscribed to {topic.Name}");
            }
        }