public DiscordClientChannelsService(DiscordSocketClient client, IDiscordClientUsersService discordClientUsersService, UserContextsFactory userContextsFactory, CommandParser commandParser) { this._client = client; this._discordClientUsersService = discordClientUsersService; this._userContextsFactory = userContextsFactory; this._commandParser = commandParser; this._client.ChannelCreated += x => this.ChannelCreated(x); }
public IEnumerable <UserContext> GetUsers(DiscordServerContext server) { var guildUsers = Server.GetGuildUsers(server.Id).Result; var userContextFactory = new UserContextsFactory(); var userContexts = guildUsers.Select(x => userContextFactory.Create(x)); return(userContexts); }
internal Workflow(Assembly botAssembly, IComponentContext context) { this._controllersService = new ControllersService(context, botAssembly, context.Resolve <BotCommandsService>(), context.Resolve <CommandsContainer>()); this._commandParser = context.Resolve <CommandParser>(); this._middlewaresService = context.Resolve <MiddlewaresService>(); this._discordServerContextFactory = context.Resolve <DiscordServerContextFactory>(); this._userContextsFactory = context.Resolve <UserContextsFactory>(); this._channelContextFactory = context.Resolve <ChannelContextFactory>(); this._userRoleFactory = context.Resolve <UserRoleFactory>(); }
public async Task <IEnumerable <Message> > GetMessages(DiscordServerContext server, ChannelContext channel, int limit, ulong fromMessageId = 0, bool goBefore = true) { var textChannel = (ITextChannel)this.GetChannel(channel.Id).Result; if (!this.CanBotReadTheChannel(textChannel)) { return(new List <Message>()); } IEnumerable <IMessage> channelMessages; if (fromMessageId == 0) { channelMessages = await textChannel.GetMessagesAsync(limit).FlattenAsync(); } else { channelMessages = await textChannel.GetMessagesAsync(fromMessageId, goBefore?Direction.Before : Direction.After, limit).FlattenAsync(); } var userFactory = new UserContextsFactory(); var messages = channelMessages.Select(message => { var user = userFactory.Create(message.Author); var contexts = new Contexts(); contexts.SetContext(server); contexts.SetContext(channel); contexts.SetContext(user); var commandParser = new CommandParser(); DiscordRequest request; try { request = commandParser.Parse(message.Content, message.Timestamp.UtcDateTime); } catch // should almost never go to catch block, but in rare cases Parse() can throw an exception { request = new DiscordRequest { OriginalMessage = message.Content, SentAt = message.Timestamp.UtcDateTime }; } return(new Message(message.Id, request, contexts)); }); return(messages); }
private async Task CallUserJoined(SocketGuildUser guildUser) { var userFactory = new UserContextsFactory(); var serverFactory = new DiscordServerContextFactory(); var userContext = userFactory.Create(guildUser); var guild = await Server.GetGuild(guildUser.Guild.Id); var discordServerContext = serverFactory.Create(guild); var landingChannel = discordServerContext.LandingChannel; var contexts = new Contexts(); contexts.SetContext(userContext); contexts.SetContext(discordServerContext); if (landingChannel != null) { contexts.SetContext(landingChannel); } OnUserJoined.ForEach(x => x.Invoke(contexts)); }
public async Task <IEnumerable <Message> > GetMessages(DiscordServerContext server, ChannelContext channel, int limit, ulong fromMessageId = 0, bool goBefore = true) { var textChannel = (ITextChannel)this.GetChannel(channel.Id).Result; if (!this.CanBotReadTheChannel(textChannel)) { return(new List <Message>()); } IEnumerable <IMessage> channelMessages; if (fromMessageId == 0) { channelMessages = await textChannel.GetMessagesAsync(limit).FlattenAsync(); } else { channelMessages = await textChannel.GetMessagesAsync(fromMessageId, goBefore?Direction.Before : Direction.After, limit).FlattenAsync(); } var userFactory = new UserContextsFactory(); var messages = channelMessages.Select(message => { var user = userFactory.Create(message.Author); var contexts = new Contexts(); contexts.SetContext(server); contexts.SetContext(channel); contexts.SetContext(user); var commandParser = new CommandParser(); var request = commandParser.Parse(message.Content, message.Timestamp.UtcDateTime); return(new Message(message.Id, request, contexts)); }); return(messages); }
public UserMiddleware(IComponentContext context) { this._userContextsFactory = new UserContextsFactory(context, context.Resolve <UsersService>()); }
public UsersService() { this._userContextsFactory = new UserContextsFactory(); }
public UserMiddleware() { this.userContextsFactory = new UserContextsFactory(); }
public UsersService(IComponentContext context) { this._userContextsFactory = new UserContextsFactory(context, this); }