8ball and architectural stuff
This commit is contained in:
parent
315526c32b
commit
d3662b9934
4 changed files with 100 additions and 1 deletions
26
Geekbot.net/Lib/StatsRecorder.cs
Normal file
26
Geekbot.net/Lib/StatsRecorder.cs
Normal file
|
@ -0,0 +1,26 @@
|
|||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Discord.WebSocket;
|
||||
|
||||
namespace Geekbot.net.Lib
|
||||
{
|
||||
public class StatsRecorder
|
||||
{
|
||||
|
||||
public static async Task Record(SocketMessage message)
|
||||
{
|
||||
await UpdateUserRecordTask(message);
|
||||
}
|
||||
|
||||
private static Task UpdateUserRecordTask(SocketMessage message)
|
||||
{
|
||||
return Task.Run(() => UpdateUserRecord(message));
|
||||
|
||||
}
|
||||
|
||||
private static void UpdateUserRecord(SocketMessage message)
|
||||
{
|
||||
Console.WriteLine(message.Author.Username + " earned a point");
|
||||
}
|
||||
}
|
||||
}
|
40
Geekbot.net/Modules/EightBall.cs
Normal file
40
Geekbot.net/Modules/EightBall.cs
Normal file
|
@ -0,0 +1,40 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Discord.Commands;
|
||||
|
||||
namespace Geekbot.net.Modules
|
||||
{
|
||||
public class EightBall : ModuleBase
|
||||
{
|
||||
[Command("8ball"), Summary("Ask 8Ball a Question.")]
|
||||
public async Task Ball([Remainder, Summary("The Question")] string echo)
|
||||
{
|
||||
var replies = new List<string> {
|
||||
"It is certain",
|
||||
"It is decidedly so",
|
||||
"Without a doubt",
|
||||
"Yes, definitely",
|
||||
"You may rely on it",
|
||||
"As I see it, yes",
|
||||
"Most likely",
|
||||
"Outlook good",
|
||||
"Yes",
|
||||
"Signs point to yes",
|
||||
"Reply hazy try again",
|
||||
"Ask again later",
|
||||
"Better not tell you now",
|
||||
"Cannot predict now",
|
||||
"Concentrate and ask again",
|
||||
"Don't count on it",
|
||||
"My reply is no",
|
||||
"My sources say no",
|
||||
"Outlook not so good",
|
||||
"Very doubtful"};
|
||||
|
||||
var rnd = new Random();
|
||||
var answer = rnd.Next(replies.Count);
|
||||
await ReplyAsync(replies[answer]);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,5 +19,33 @@ namespace Geekbot.net.Modules
|
|||
$"Account created at {userInfo.CreatedAt.Day}.{userInfo.CreatedAt.Month}.{userInfo.CreatedAt.Year}, that is {age} days ago\r\n" +
|
||||
$"Currently {userInfo.Status}");
|
||||
}
|
||||
|
||||
[Command("level"), Summary("Get a level based on a number")]
|
||||
public async Task GetLevel([Summary("The (optional) user to get info for")] string xp)
|
||||
{
|
||||
var level = GetLevelAtExperience(int.Parse(xp));
|
||||
await ReplyAsync(level.ToString());
|
||||
}
|
||||
|
||||
public int GetExperienceAtLevel(int level){
|
||||
double total = 0;
|
||||
for (int i = 1; i < level; i++)
|
||||
{
|
||||
total += Math.Floor(i + 300 * Math.Pow(2, i / 7.0));
|
||||
}
|
||||
|
||||
return (int) Math.Floor(total / 16);
|
||||
}
|
||||
|
||||
public int GetLevelAtExperience(int experience) {
|
||||
int index;
|
||||
|
||||
for (index = 0; index < 120; index++) {
|
||||
if (GetExperienceAtLevel(index + 1) > experience)
|
||||
break;
|
||||
}
|
||||
|
||||
return index;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -4,6 +4,7 @@ using System.Threading.Tasks;
|
|||
using Discord;
|
||||
using Discord.Commands;
|
||||
using Discord.WebSocket;
|
||||
using Geekbot.net.Lib;
|
||||
|
||||
namespace Geekbot.net
|
||||
{
|
||||
|
@ -70,7 +71,11 @@ namespace Geekbot.net
|
|||
if (message == null) return;
|
||||
if (message.Author.Username.Contains("Geekbot")) return;
|
||||
|
||||
Console.WriteLine(message.Channel + " - " + message.Author + " - " + message.Content);
|
||||
var channel = (SocketGuildChannel) message.Channel;
|
||||
|
||||
Console.WriteLine(channel.Guild.Name + " - " + message.Channel + " - " + message.Author.Username + " - " + message.Content);
|
||||
|
||||
await StatsRecorder.Record(message);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue