public async Task IgnoresAdminCommandsFromNonAdmin() { // Arrange BotMock .Setup(b => b.GetChatAdministratorsAsync(It.IsAny <ChatId>(), It.IsAny <CancellationToken>())) .ReturnsAsync(Array.Empty <ChatMember>()); var builder = new BotFrameworkBuilder(BotMock.Object); var command = new AdminTestCommand(); builder.AddCommand <AdminTestCommand>(command); var bot = (BotFramework)builder.Build(); var update = new Update { Message = new Message { Text = "/admin", From = new User { Id = 123 }, Chat = new Chat { Id = 456 } }, }; // Act await bot.HandleUpdate(update); // Assert Assert.False(command.Called); }
public async Task HandlesAdminCommandsFromAdmin() { var chat = new Chat { Id = 456 }; // Arrange BotMock .Setup(b => b.GetChatAdministratorsAsync( It.Is <ChatId>(c => c.Identifier == chat.Id), It.IsAny <CancellationToken>())) .ReturnsAsync((ChatId id, CancellationToken token) => { return(new[] { new ChatMember { User = new User { Id = 123 } } }); }); var builder = new BotFrameworkBuilder(BotMock.Object); var command = new AdminTestCommand(); builder.AddCommand <AdminTestCommand>(command); var bot = (BotFramework)builder.Build(); var update = new Update { Message = new Message { Text = "/admin", From = new User { Id = 123 }, Chat = chat }, }; // Act await bot.HandleUpdate(update); // Assert Assert.True(command.Called); }
static async Task Main(string[] args) { var host = Host.CreateDefaultBuilder(args) .ConfigureLogging((context, builder) => { if (context.HostingEnvironment.IsDevelopment()) { builder.AddConsole(); } else { builder.AddJsonConsole(); } }) .ConfigureServices((context, services) => { services.AddHostedService <BotService>(); services.AddSingleton <ITelegramBotClient>(s => { var config = s.GetRequiredService <IConfiguration>(); var token = config["Telegram:Token"]; var bot = new TelegramBotClient(token); return(bot); }); services.AddSingleton <IBotFramework>(s => { var botClient = s.GetRequiredService <ITelegramBotClient>(); var builder = new BotFrameworkBuilder(botClient); builder.AddCommand(new PingCommand()); return(builder.Build()); }); }) // .UseBotFramework(o => // { // o.AddCommand<PingCommand>(); // o.AddCommand<KickCommand>(); // }) .UseSystemd() .UseConsoleLifetime() .Build(); await host.RunAsync(); }
public async Task IgnoresUnregisteredCommands() { // Arrange var builder = new BotFrameworkBuilder(BotMock.Object); var command = new TestCommand(); builder.AddCommand <TestCommand>(command); var bot = (BotFramework)builder.Build(); var update = new Update { Message = new Message { Text = "/foo" } }; // Act await bot.HandleUpdate(update); // Assert Assert.False(command.Called); }
public async Task BotHandlesCommand(string msgText) { // Arrange var builder = new BotFrameworkBuilder(BotMock.Object); var command = new TestCommand(); builder.AddCommand <TestCommand>(command); var bot = (BotFramework)builder.Build(); await bot.StartAsync(); var update = new Update { Message = new Message { Text = msgText } }; // Act await bot.HandleUpdate(update); // Assert Assert.True(command.Called); }