Highscores and cleanup

This commit is contained in:
Runebaas 2017-07-30 23:35:28 +02:00
parent 90299a39ee
commit bfca811955
No known key found for this signature in database
GPG key ID: 2677AF508D0300D6
2 changed files with 40 additions and 25 deletions

View file

@ -1,5 +1,8 @@
using System; using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Linq;
using Discord; using Discord;
using Discord.Commands; using Discord.Commands;
using Geekbot.net.Lib; using Geekbot.net.Lib;
@ -59,6 +62,34 @@ namespace Geekbot.net.Modules
await ReplyAsync("", false, eb.Build()); await ReplyAsync("", false, eb.Build());
} }
[Alias("highscore")]
[Command("rank", RunMode = RunMode.Async), Summary("get user top 10")]
public async Task Rank()
{
await ReplyAsync("this will take a moment...");
var allGuildUsers = await Context.Guild.GetUsersAsync();
var unsortedDict = new Dictionary<string, int>();
foreach(var user in allGuildUsers)
{
var key = Context.Guild.Id + "-" + user.Id;
var messages = (int)redis.Client.StringGet(key + "-messages");
if(messages > 0) {
unsortedDict.Add(user.Username, messages);
}
}
var sortedDict = unsortedDict.OrderByDescending(x => x.Value);
var reply = new StringBuilder();
var count = 1;
foreach(KeyValuePair<string, int> entry in sortedDict)
{
if(count < 11){
reply.Append($"#{count} - **{entry.Key}** - {entry.Value}\r\n");
count++;
} else {
break;
}
}
await ReplyAsync(reply.ToString());
}
} }
} }

View file

@ -103,44 +103,28 @@ namespace Geekbot.net
return true; return true;
} }
public async Task Reconnect(Exception exception)
{
Console.WriteLine("=========================================");
Console.WriteLine("Geekbot Disconnected from the Discord Gateway...");
Console.WriteLine(exception.Message);
Console.WriteLine("Attempting Reconnect...");
Console.WriteLine("=========================================");
await client.StopAsync();
System.Threading.Thread.Sleep(10000);
await Login();
}
public async Task FinishStartup()
{
}
public async Task HandleCommand(SocketMessage messageParam) public async Task HandleCommand(SocketMessage messageParam)
{ {
var message = messageParam as SocketUserMessage; var message = messageParam as SocketUserMessage;
if (message == null) return; if (message == null) return;
if (message.Author.IsBot) return; if (message.Author.IsBot) return;
int argPos = 0; int argPos = 0;
if (message.ToString().ToLower().StartsWith("ping")) var lowCaseMsg = message.ToString().ToLower();
if (lowCaseMsg.StartsWith("ping"))
{ {
await message.Channel.SendMessageAsync("pong"); await message.Channel.SendMessageAsync("pong");
return; return;
} }
if (message.ToString().ToLower().StartsWith("hui")) if (lowCaseMsg.StartsWith("hui"))
{ {
await message.Channel.SendMessageAsync("hui!!!"); await message.Channel.SendMessageAsync("hui!!!");
return; return;
} }
if (message.ToString().ToLower().Contains("teamspeak") || message.ToString().ToLower().Contains("skype")) // if (message.ToString().ToLower().Contains("teamspeak") || message.ToString().ToLower().Contains("skype"))
{ // {
await message.Channel.SendMessageAsync("How dare you to use such a filthy word in here http://bit.ly/2poL2IZ"); // await message.Channel.SendMessageAsync("How dare you to use such a filthy word in here http://bit.ly/2poL2IZ");
return; // return;
} // }
if (!(message.HasCharPrefix('!', ref argPos) || message.HasMentionPrefix(client.CurrentUser, ref argPos))) return; if (!(message.HasCharPrefix('!', ref argPos) || message.HasMentionPrefix(client.CurrentUser, ref argPos))) return;
var context = new CommandContext(client, message); var context = new CommandContext(client, message);
Task.Run(async () => await commands.ExecuteAsync(context, argPos, map)); Task.Run(async () => await commands.ExecuteAsync(context, argPos, map));