using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
using Discord.WebSocket ;
using Discord.Commands ;
using System.Reflection ;
using System.IO ;
using System.Data ;
using Discord ;
namespace Kehyeedra3
{
//Set CommandHandler as partial class of Bot
class CommandHandler : Bot
{
public static async Task InstallCommands ( )
{
//adds HandleCommand to handle the commands from message received
_ bot . MessageReceived + = HandleCommand ;
await InstallModules ( ) ;
}
private static async Task HandleCommand ( SocketMessage arg )
{
if ( ! arg . Author . IsBot )
{
if ( arg is SocketUserMessage message )
{
if ( message = = null ) return ;
var Context = new SocketCommandContext ( _ bot , message ) ;
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
if ( ! Database . Users . Any ( x = > x . Id = = arg . Author . Id ) )
{
Database . Users . Add ( new Services . Models . User
{
Id = arg . Author . Id ,
Avatar = arg . Author . GetAvatarUrl ( ) ? ? arg . Author . GetDefaultAvatarUrl ( ) ,
Username = arg . Author . Username
} ) ;
await Database . SaveChangesAsync ( ) ;
}
else
{
var user = Database . Users . FirstOrDefault ( x = > x . Id = = arg . Author . Id ) ;
user . Username = arg . Author . Username ;
user . Avatar = arg . Author . GetAvatarUrl ( ) ? ? arg . Author . GetDefaultAvatarUrl ( ) ;
await Database . SaveChangesAsync ( ) ;
}
}
int argPos = 0 ;
if ( message . Content . Contains ( "\uD83C\uDD71" ) ) //B emoji detector
{
await Context . Channel . SendMessageAsync ( $"B emoji detected. Proceed to kill yourself, {Context.User.Mention}" ) ;
}
if ( message . Content . ToLowerInvariant ( ) . Contains ( "jojo" ) )
{
var jojoke = WeebClient . DownloadString ( "https://api.exsersewo.dev/jojoke/?raw" ) ;
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention} is that a fucksnifflerling {jojoke} reference?" ) ;
}
if ( message . Channel is IGuildChannel chan )
{
var perms = chan . GetPermissionOverwrite ( _ bot . CurrentUser ) ;
if ( perms . HasValue )
{
if ( perms . Value . SendMessages = = PermValue . Deny ) return ;
}
var botGuild = _ bot . GetGuild ( chan . GuildId ) . GetUser ( _ bot . CurrentUser . Id ) ;
if ( ! botGuild . GetPermissions ( chan ) . SendMessages ) return ;
}
if ( ! ( message . HasStringPrefix ( Configuration . Load ( ) . Prefix , ref argPos ) ) ) return ;
{
var result = await _ cmds . ExecuteAsync ( Context , argPos , _d map ) ;
if ( result . IsSuccess )
{
Console . ForegroundColor = ConsoleColor . Green ;
Console . WriteLine ( "Sent successfully" ) ;
Console . ForegroundColor = ConsoleColor . White ;
}
else
{
await Context . Channel . SendMessageAsync ( $"Command failed with the following error:\n{result.ErrorReason}\nPlease make sure your brain is plugged in and charging." ) ;
Console . ForegroundColor = ConsoleColor . Red ; //set text red
Console . WriteLine ( $"Something went wrong\n{result.ErrorReason}" ) ;
Console . ForegroundColor = ConsoleColor . White ; //back to white
}
}
}
}
}
public static async Task InstallModules ( )
{
await _ cmds . AddModulesAsync ( Assembly . GetEntryAssembly ( ) , _d map ) ;
}
}
}