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"); } }
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}"); } }
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."); }
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}"); } }