Esempio n. 1
0
        public async Task Retard([Summary("User Mention")] IUser user = null)
        {
            try {
                var lastmessages = await Context.Channel.GetMessagesAsync(500, CacheMode.AllowDownload).FlattenAsync();

                var userlast = lastmessages.Where(x => !x.Content.Contains("e.") && x.Author != Context.Client.CurrentUser).FirstOrDefault(x => x.Author == user);
                await Retard(userlast.Content);
            } catch (NullReferenceException) {
                await NeoConsole.Log(LogSeverity.Error, "FunModule", "Error getting last messages of user, outofcache");
            }
        }
Esempio n. 2
0
        private async Task HandleTag(SocketUserMessage e)
        {
            using (var db = new NeoContext()) {
                if (!db.Tags.Any(t =>
                                 t.Trigger == e.Content))
                {
                    return;
                }
                var obj = db.Tags.FirstOrDefault(t => t.Trigger == e.Content);
                if (obj.IfAttachment)
                {
                    await NeoConsole.Log(LogSeverity.Critical, "TAG", obj.Value);

                    //await e.Channel.SendFileAsync(obj.Value,"henlo");
                    await e.Channel.SendMessageAsync("", false, NeoEmbeds.Picture(obj.Value, e.Author));
                }
                else
                {
                    await e.Channel.SendMessageAsync(obj.Value);
                }
                db.SaveChanges();
            }
        }
Esempio n. 3
0
        private async Task HandleCommand(SocketMessage s)
        {
            var msg = s as SocketUserMessage;

            if (msg == null)
            {
                return;                                           // Check if the received message is from a user.
            }
            var context = new SocketCommandContext(_client, msg); // Create a new command context.

            if (context.User.IsBot)
            {
                return;
            }
            var prefix = Configuration.Load().Prefix;

            using (var db = new NeoContext()) {
                if (!db.Users.Any(x => x.Id == msg.Author.Id)) //if user does net exist in database create it
                {
                    var newobj = new DbUser {
                        Id   = msg.Author.Id,
                        Cash = 500
                    };
                    db.Users.Add(newobj);
                    db.SaveChanges();
                }
                if (!(msg.Channel is ISocketPrivateChannel) && db.Guilds.Any(x => x.Id == (msg.Channel as IGuildChannel).GuildId))
                {
                    prefix = db.Guilds.FirstOrDefault(x => x.Id == (msg.Channel as IGuildChannel).GuildId).Prefix ?? Configuration.Load().Prefix;
                }
                if (db.Blacklist.Any(bl => bl.User == db.Users.FirstOrDefault(u => u.Id == context.User.Id)))
                {
                    return;
                }
            }

            await CheckAfk(msg);
            await HandleTag(msg);

            await NeoConsole.Log(msg);

            var argPos = 0;                                     // Check if the message has either a string or mention prefix.

            if (msg.HasStringPrefix(prefix, ref argPos) ||
                msg.HasStringPrefix(Configuration.Load().Prefix, ref argPos) ||
                msg.HasMentionPrefix(_client.CurrentUser, ref argPos))
            {
                IResult result; // Try and execute a command with the given context.
                try {
                    result = await _cmds.ExecuteAsync(context, argPos, _services);

                    if (!result.IsSuccess && result.Error != CommandError.UnknownCommand)
                    {
                        var embed = NeoEmbeds.Error(result.ErrorReason, context.User, result.Error != null ? result.Error.ToString() : "Error").Build();
                        await context.Channel.SendMessageAsync("", false, embed);
                    }
                } catch (Exception ex) {
                    var embed = NeoEmbeds.Minimal(ex.Message).AddField("inner", ex.InnerException?.Message ?? "nope");
                    await NeoConsole.NewLine(ex.StackTrace);

                    await context.Channel.SendMessageAsync("", false, embed.Build());
                }
            }
        }
Esempio n. 4
0
 private static Task Log(LogMessage l)
 {
     Task.Run(async()
              => await NeoConsole.Log(l.Severity, l.Source, l.Exception?.ToString() ?? l.Message));
     return(Task.CompletedTask);
 }