using System ;
using System.Threading.Tasks ;
using Discord.Commands ;
using Discord ;
using System.IO ;
using Kehyeedra3.Preconditions ;
using System.Net ;
using System.Linq ;
using System.Data ;
using Kehyeedra3.Services ;
using MySql.Data ;
using MySql.Data.MySqlClient ;
using Kehyeedra3.Services.Models ;
using System.Collections.Generic ;
namespace Kehyeedra3
{
[Group]
public class Stats : ModuleBase ///////////////////////////////////////////////
{
[Command("ping")]
public async Task Pong ( )
{
await Context . Channel . TriggerTypingAsync ( ) ;
await ReplyAsync ( $"My current ping is {Bot._bot.GetShardFor(Context.Guild).Latency}ms" ) ;
}
}
[Group]
public class HelpModule : ModuleBase ///////////////////////////////////////////////
{
private CommandService _ service ;
public HelpModule ( CommandService service ) //Create a constructor for the commandservice dependency
{
_ service = service ;
}
[Command("commands"), Alias("coomands")]
public async Task HelpAsync ( )
{
string debug = null ;
string prefix = Configuration . Load ( ) . Prefix ;
var builder = new EmbedBuilder ( )
{
Color = new Color ( 1 1 4 , 1 3 7 , 2 1 8 ) ,
Description = "These are the commands you can use"
} ;
foreach ( var module in _ service . Modules )
{
string description = null ;
debug + = $"{module.Name}\n" ;
foreach ( var cmd in module . Commands )
{
var result = await cmd . CheckPreconditionsAsync ( Context ) ;
if ( result . IsSuccess )
description + = $"{prefix}{cmd.Aliases.First()}\n" ;
debug + = $"{prefix}{cmd.Aliases.First()}\n" ;
}
if ( ! string . IsNullOrWhiteSpace ( description ) )
{
builder . AddField ( x = >
{
x . Name = module . Name ;
x . Value = description ;
x . IsInline = false ;
} ) ;
}
}
await ReplyAsync ( debug ) ;
}
[Command("command"),Alias("coomand")]
public async Task HelpAsync ( string command )
{
var result = _ service . Search ( Context , command ) ;
if ( ! result . IsSuccess )
{
await ReplyAsync ( $"Sorry, I couldn't find a command with the name **{command}**." ) ;
return ;
}
string prefix = Configuration . Load ( ) . Prefix ;
var builder = new EmbedBuilder ( )
{
Color = new Color ( 0 , 2 5 5 , 0 ) ,
Description = $"Here are some commands like **{command}**"
} ;
foreach ( var match in result . Commands )
{
var cmd = match . Command ;
builder . AddField ( x = >
{
x . Name = string . Join ( ", " , cmd . Aliases ) ;
x . Value = $"Parameters: {string.Join(" , ", cmd.Parameters.Select(p => p.Name))}\n" +
$"Remarks: {cmd.Remarks}" ;
x . IsInline = false ;
} ) ;
}
await ReplyAsync ( "" , false , builder . Build ( ) ) ;
}
[Command("help")]
public async Task HelpCommand ( )
{
EmbedBuilder embed = new EmbedBuilder ( ) ;
embed . AddField ( "help" , "Shows this thing" ) ;
embed . AddField ( "ping" , "Shows ping to server" ) ;
embed . AddField ( "commands" , "Lists commands" ) ;
embed . AddField ( "command" , "Tells what parameters a command uses" ) ;
embed . AddField ( "delet" , "Posts a delet this image. Can be used on other channels." ) ;
embed . AddField ( "ratetrap" , "Rates your or another person's trap potential as a percentage" ) ;
embed . AddField ( "8b" , "Gives a prediction like a generic 8ball command that every self respecting discord bot must have" ) ;
embed . AddField ( "AIMLbot" , "Mention me to talk with me (don't expect intelligence)" ) ;
embed . AddField ( "math" , "It's a calculator, that's what compooter do" ) ;
embed . AddField ( "roll" , "Rolls dice. Eg. 'roll d20'" ) ;
embed . AddField ( "mine" , "Mines %coins" ) ;
embed . AddField ( "bet" , "Gamble %coins in units of 0.0001%" ) ;
embed . AddField ( "balance" , "Displays the percentage of the total currency you own" ) ;
embed . AddField ( "bank" , "Displays the percentage of total currency the bank owns" ) ;
embed . AddField ( "give" , "Give a user money. Eg. 'give @user [amount]'" ) ;
embed . AddField ( "say" , "Sends given message to given channel (admin only)" ) ;
embed . AddField ( "adddelet" , "Adds a delet this image to the bot from link or image (admin only)" ) ;
await ReplyAsync ( "Here's a list of commands and what they do" , false , embed . Build ( ) ) ;
}
}
//public class Audio_module : ModuleBase<ICommandContext> ////////////////////////
//{
// [Command("join", RunMode = RunMode.Async)]
// public async Task JoinCmd()
// {
// await Bot.AudioService.JoinAudio(Context.Guild, (Context.User as IVoiceState).VoiceChannel);
// }
// [Command("leave", RunMode = RunMode.Async)]
// public async Task LeaveCmd()
// {
// await Bot.AudioService.LeaveAudio(Context.Guild);
// }
// [Command("play", RunMode = RunMode.Async)]
// public async Task PlayCmd([Remainder] string song)
// {
// await Bot.AudioService.SendAudioAsync(Context.Guild, Context.Channel, song);
// }
//}
public class Stuff : ModuleBase ///////////////////////////////////////////////
{
[Command("delet")]
public async Task DeletThis ( )
{
string imgdirpath = Path . Combine ( AppDomain . CurrentDomain . BaseDirectory , "Delet" ) ;
DirectoryInfo imgdir = new DirectoryInfo ( imgdirpath ) ;
var files = imgdir . GetFiles ( ) ;
var item = files [ Bot . _ rnd . Next ( 0 , files . Length ) ] ;
await Context . Channel . SendFileAsync ( item . FullName ) ;
}
[Command("delet")]
public async Task DeletThis ( ITextChannel channel )
{
string imgdirpath = Path . Combine ( AppDomain . CurrentDomain . BaseDirectory , "Delet" ) ;
DirectoryInfo imgdir = new DirectoryInfo ( imgdirpath ) ;
var files = imgdir . GetFiles ( ) ;
var item = files [ Bot . _ rnd . Next ( 0 , files . Length ) ] ;
await channel . SendFileAsync ( item . FullName ) ;
}
[Command("ratetrap")]
public async Task RateTrap ( )
{
Random rando = new Random ( ) ;
Random rando1 = new Random ( ) ;
int trapRating0 = rando . Next ( 0 , 1 0 1 ) ;
if ( trapRating0 = = 1 0 0 )
{
int trapRating1 = rando1 . Next ( 0 , 1 0 0 1 ) ;
await Context . Channel . SendMessageAsync ( $"I'd say right now you're {trapRating1}% passable" ) ;
}
else
{
await Context . Channel . SendMessageAsync ( $"I'd say right now you're {trapRating0}% passable" ) ;
}
}
[Command("ratetrap")]
public async Task RateOtherTrap ( [ Remainder ] string name )
{
Random rando = new Random ( ) ;
Random rando1 = new Random ( ) ;
int trapRating0 = rando . Next ( 0 , 1 0 1 ) ;
if ( trapRating0 = = 1 0 0 )
{
int trapRating1 = rando1 . Next ( 0 , 1 0 0 1 ) ;
await Context . Channel . SendMessageAsync ( $"I'd say right now {name} is {trapRating1}% passable" ) ;
}
else
{
await Context . Channel . SendMessageAsync ( $"I'd say right now {name} is {trapRating0}% passable" ) ;
}
}
[Command("ratertrap")]
public async Task RaterTrap ( )
{
await Context . Channel . SendMessageAsync ( "Please do not be like this man http://tinyurl.com/y7lj6nob" ) ;
}
[Command("8b")]
public async Task VapeBall ( [ Remainder ] string input )
{
Random rando = new Random ( ) ;
string [ ] predictions = new string [ ]
{
"No but you're still gay" ,
"I think so" ,
"Mayhaps" ,
"Yeah but you're still gay" ,
"No kys"
} ;
int randomIndex = rando . Next ( predictions . Length ) ;
string text = predictions [ randomIndex ] ;
await ReplyAsync ( text + " " + Context . User . Mention ) ;
}
[Command("math")]
public async Task Mathboi ( [ Remainder ] string input )
{
string result = new DataTable ( ) . Compute ( input , null ) . ToString ( ) ;
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention} {input} = {result}" ) ;
}
[Command("roll")]
public async Task RollDice ( [ Remainder ] string input )
{
int dinput = int . Parse ( input . Substring ( input . IndexOf ( "d" ) ) . Replace ( "d" , "" ) ) ;
Random rando = new Random ( ) ;
int output = rando . Next ( dinput + 1 ) ;
await Context . Channel . SendMessageAsync ( "" + output ) ;
}
[Command("remind")]
public async Task Reminder ( ulong d , ulong h , ulong m , [ Remainder ] string r )
{
DateTime dt = DateTime . UtcNow ;
string time = dt . ToString ( "dd/MM/yyyy HH:mm" ) ;
ulong yeedraStamp = DateTime . UtcNow . ToYeedraStamp ( ) ;
var reminder = new Reminder
{
UserId = Context . User . Id ,
Message = ( $"At **UTC {time}** you wanted me to remind you:\n**'{r}'**" ) ,
Created = yeedraStamp ,
Send = ( ( d * 8 6 4 0 0 ) + ( h * 3 6 0 0 ) + ( m * 6 0 ) ) + yeedraStamp
} ;
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
Database . Reminders . Add ( reminder ) ;
await Database . SaveChangesAsync ( ) . ConfigureAwait ( false ) ;
}
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention} Ok, I'll remind you in {d}d {h}h {m}m" ) ;
}
[Command("grant")]
public async Task Daycare ( IGuildUser ouser )
{
var user = await Context . Guild . GetUserAsync ( Context . User . Id ) . ConfigureAwait ( false ) ;
var drole = Context . Guild . GetRole ( 6 8 2 1 0 9 2 4 1 3 6 3 9 2 2 9 6 5 ) ;
if ( user . RoleIds . Any ( id = > id = = 6 8 2 1 0 9 2 4 1 3 6 3 9 2 2 9 6 5 ) )
{
await ouser . AddRoleAsync ( drole ) ;
await user . RemoveRoleAsync ( drole ) ;
await Context . Channel . SendMessageAsync ( $"*{ouser.Mention} the power of daycare rests in the palm of your hands*" ) ;
}
else
{
await Context . Channel . SendMessageAsync ( $"HNNNNG you do not possess this power HNNNGGGG" ) ;
}
}
[Command("dab")]
public async Task Dab ( IGuildUser user = null )
{
if ( user = = null )
{
await Context . Channel . SendMessageAsync ( $"You put a dab of creamy sauce on your delicious, crunchy fishstick.\nYou have gained +5 calories." ) ;
}
else
{
await Context . Channel . SendMessageAsync ( $"You give your good friend {user.Mention} a dab of creamy sauce to enjoy with their delicious, crunchy fishstick.\n{user.Mention} has gained +5 calories." ) ;
}
}
}
public class Economy : ModuleBase < ICommandContext >
{
readonly string [ ] ores = new string [ ]
{
"**Gold**," ,
"**Platinum**," ,
"**Plastids**," ,
"a ticking **Time Bomb**," ,
"**Neural Sensors**," ,
"an **Amethyst**," ,
"**Germanium**," ,
"a **Hotdog**," ,
"**Corundum**," ,
"**Quartz**," ,
"**Lithium**," ,
"**Stone**," ,
"a lost **Tribe of Ethiopians**," ,
"**Beryllium**," ,
"**Gallium**," ,
"an **Amber**," ,
"**Bismuth**" ,
"an **Emerald**," ,
"a lost **Sock**," ,
"**Tellurium**," ,
"**Ferrite**," ,
"a **Glass of Water**," ,
"**Redstone**," ,
"**Racism**," ,
"**Bronze Ore**," ,
"**Chlorophyte**," ,
"a **Mysterious Artifact of Great Power**," ,
"**Goblite**," ,
"**Ligmanite**," ,
"**Ramen's Friendship**," ,
"an unidentified **Skeleton**," ,
"a piece of **Gravel**," ,
"**Copper**," ,
"**Volatile Motes**," ,
"a **Diamond**," ,
"a **Girlfriend**," ,
"**Thorium**," ,
"a **Fresh Apple**," ,
"**Raid Shadow Legends** sponsorship money," ,
"a **Boot**," ,
"**Runite**," ,
"a **WinRAR license key**," ,
"a **Viet Cong Tunnel**," ,
"a single unit of several **Trees**," ,
"**1,000,000₩**," ,
"**Jas's Love**," ,
"a **Rock Golem**," ,
"a piece of **Toast**," ,
"**Luminite**," ,
"a **Funky Lava Lamp**," ,
"the **Cum Chalice**, you raise a toast to Nick." ,
"a **#%**," ,
"the **Master Sword**," ,
"your **True Calling in Life**," ,
"the **Ocarina of Time**," ,
"**Phosphophyllite**," ,
"a **Brain**," ,
"**Tom's Penis**," ,
"**Oil**," ,
"a **Can of Peaches**," ,
"a **Used Deodorant Stick**,"
} ;
readonly string [ ] discards = new string [ ]
{
"you presume it is worthless and toss it away" ,
"you drop it and lose it" ,
"a vicious furry takes it from you" ,
"it appears to have vanished" ,
"but it seems like you were hallucinating" ,
"but it is seized by the communists" ,
"you mistake it for a chance to succeed in life and throw it away" ,
"you get scared and curb stomp it, shattering it" ,
"the **Goblins** claim rightful possession of it"
} ;
readonly FishSpecies [ ] rfish = new FishSpecies [ ]
{
FishSpecies . Doomfish ,
FishSpecies . Clownfish ,
FishSpecies . Teracrab ,
FishSpecies . Blobfish ,
FishSpecies . Psychedelica
} ;
readonly string [ ] rfishmotes = new string [ ]
{
"<:doomfish:651879988232060949>" ,
"<:missingRar:682586847100403715>[Clownfish]" ,
"<a:teracrableft:681872487901954123><a:teracrabright:681872487264681984>" ,
"<:missingRar:682586847100403715>[Blobfish]" ,
"<a:psychedelicaleft:682606276592664666><a:psychedelicaright:682606278354141249>"
} ;
readonly FishSpecies [ ] ufish = new FishSpecies [ ]
{
FishSpecies . Gigacrab ,
FishSpecies . Dopefish ,
FishSpecies . Stargazer ,
FishSpecies . Isopod ,
FishSpecies . Sheephead ,
} ;
readonly string [ ] ufishmotes = new string [ ]
{
"<:gigacrab:681871426382594208>" ,
"<:missingUnc:682586846857003064>[Dopefish]" ,
"<:missingUnc:682586846857003064>[Stargazer]" ,
"<:missingUnc:682586846857003064>[Isopod]" ,
"<:sheepheadleft:681200891810021376><:sheepheadright:681200891608563767>"
} ;
readonly FishSpecies [ ] cfish = new FishSpecies [ ]
{
FishSpecies . Cod ,
FishSpecies . Salmon ,
FishSpecies . Shrimp ,
FishSpecies . Crayfish ,
FishSpecies . Betta ,
FishSpecies . Pufferfish ,
FishSpecies . Carp ,
FishSpecies . Megacrab
} ;
readonly string [ ] cfishmotes = new string [ ]
{
"<:codleft:681182238448418891><:codright:681182238628511747>" ,
"<:missingCom:682586847079432217> [Salmon]" ,
"<:missingCom:682586847079432217> [Shrimp]" ,
"<:missingCom:682586847079432217> [Crayfish]" ,
"<:missingCom:682586847079432217> [Betta]" ,
"<:missingCom:682586847079432217> [Pufferfish]" ,
"<:missingCom:682586847079432217> [Carp]" ,
"<:megacrab:681871426319286302>"
} ;
readonly string o = "<:ye:677089325208305665>" ;
readonly string n = "<:no:677091514249248778>" ;
readonly string ye = "<:ya:677179974154715146>" ;
[Command("mine"), Ratelimit(6, 2, Measure.Minutes)]
public async Task Mine ( )
{
ulong time = ulong . Parse ( DateTime . Now . ToString ( "yyyyMMddHHmm" ) ) ;
ulong lastmine ;
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
var user = Database . Users . FirstOrDefault ( x = > x . Id = = Context . User . Id ) ;
lastmine = user . LastMine ;
user . LastMine = time ;
await Database . SaveChangesAsync ( ) ;
}
if ( lastmine < time )
{
int res1 = SRandom . Next ( 0 , 1 0 1 ) ;
int res2 = SRandom . Next ( 0 , 1 0 1 ) ;
int res3 = SRandom . Next ( 0 , 1 0 1 ) ;
int end = 0 ;
string marks = $"{n}{n}{n}" ;
int num = SRandom . Next ( ores . Length ) ;
int numd = SRandom . Next ( discards . Length ) ;
string ore = ores [ num ] ;
string discard = discards [ numd ] ;
if ( res1 > 2 0 )
{
end = 1 ;
marks = $"{o}{n}{n}" ;
if ( res2 > 5 0 )
{
end = 2 ;
marks = $"{o}{o}{n}" ;
if ( res3 > 8 0 )
{
marks = $"{o}{o}{o}" ;
string bonus = "" ;
int res4 = SRandom . Next ( 0 , 6 ) * 2 ;
int res5 = res4 / 2 ;
end = res4 + 3 ;
for ( int i = 0 ; i < 5 ; i + + )
{
if ( i < res5 )
{
bonus + = $"{ye}" ;
}
else
{
bonus + = $"{n}" ;
}
}
if ( res4 = = 0 )
{
await Context . Channel . SendMessageAsync ( $"{marks} **+** {bonus}\n{Context.User.Mention} **Lucky strike!** Bonus: {ore} You earned {end / 10000d}%" ) ;
}
else
{
await Context . Channel . SendMessageAsync ( $"{marks} **+** {bonus}\n{Context.User.Mention} **Lucky strike!** Bonus: {res4}, You earned {end / 10000d}%" ) ;
}
}
}
}
if ( end = = 0 )
{
await Context . Channel . SendMessageAsync ( $"{marks}\n{Context.User.Mention} You have found {ore} {discard}." ) ;
}
else
{
if ( end < 3 )
{
await Context . Channel . SendMessageAsync ( $"{marks}\n{Context.User.Mention} You found {end / 10000d}% while mining" ) ;
}
}
if ( end ! = 0 )
{
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
var user = Database . Users . FirstOrDefault ( x = > x . Id = = Context . User . Id ) ;
if ( ! user . GrantMoney ( Database . Users . FirstOrDefault ( x = > x . Id = = 0 ) , end ) )
{
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention} Bank has no money, convince someone to gamble" ) ;
}
await Database . SaveChangesAsync ( ) ;
}
}
}
else
{
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention} wait 1 minute ok next minute yeah? yeah buddy?" ) ;
}
}
[Command("fish"), Ratelimit(6, 2, Measure.Minutes)]
public async Task Fishing ( )
{
ulong time = ulong . Parse ( DateTime . Now . ToString ( "yyyyMMddHHmm" ) ) ;
ulong lastfish ;
ulong totalXp ;
ulong xp ;
ulong level ;
ulong lvlXp ;
List < FishingInventorySlot > inv = new List < FishingInventorySlot > ( ) ;
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
var user = Database . Fishing . FirstOrDefault ( x = > x . Id = = Context . User . Id ) ;
if ( user = = null )
{
{
user = new Fishing
{
Id = Context . User . Id ,
} ;
Database . Fishing . Add ( user ) ;
}
}
else
{
inv = user . GetInventory ( ) ;
}
level = user . Lvl ;
lastfish = user . LastFish ;
totalXp = user . TXp ;
lvlXp = user . Xp ;
await Database . SaveChangesAsync ( ) ;
}
if ( lastfish < time )
{
int rari = ( SRandom . Next ( 0 , 2 0 1 ) ) ;
int weight = SRandom . Next ( 1 , 1 5 1 ) ;
ulong rarity ;
if ( level < 1 0 0 )
{
rarity = level + ( ulong ) rari ;
}
else
{
rarity = 1 0 0 + ( ulong ) rari ;
}
FishRarity rarmult ;
string rar = "" ;
FishSpecies fish ;
string emote = "" ;
if ( rarity > 2 0 0 )
{
rar = "*Rare*" ;
rarmult = FishRarity . Rare ;
int num = SRandom . Next ( rfish . Length ) ;
fish = rfish [ num ] ;
emote = rfishmotes [ num ] ;
xp = 2 0 ;
}
else
{
if ( rarity > 1 8 0 )
{
rar = "*Uncommon*" ;
rarmult = FishRarity . Uncommon ;
int num = SRandom . Next ( ufish . Length ) ;
fish = ufish [ num ] ;
emote = ufishmotes [ num ] ;
xp = 1 0 ;
}
else
{
if ( rarity = = 2 0 7 )
{
rar = "***Legendary***" ;
rarmult = FishRarity . Legendary ;
fish = FishSpecies . LuckyCatfish ;
weight = SRandom . Next ( 2 0 0 , 4 0 0 1 ) ;
emote = "<a:catfishleft:682655661422542888><a:catfishright:682655661481525284>" ;
xp = 1 0 0 ;
}
else
{
rar = "*Common*" ;
rarmult = FishRarity . Common ;
int num = SRandom . Next ( cfish . Length ) ;
fish = cfish [ num ] ;
emote = cfishmotes [ num ] ;
xp = 5 ;
}
}
}
FishWeight size ;
if ( weight > = 7 5 )
{
size = FishWeight . Medium ;
if ( weight > = ( 1 0 0 - Convert . ToInt32 ( level ) ) )
{
weight = SRandom . Next ( 1 0 0 , 2 0 1 ) ;
}
}
else
{
size = FishWeight . Small ;
}
if ( weight > = 1 5 0 )
{
size = FishWeight . Large ;
}
string lvlUp = "" ;
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
var user = Database . Fishing . FirstOrDefault ( x = > x . Id = = Context . User . Id ) ;
user . LastFish = time ;
await Database . SaveChangesAsync ( ) . ConfigureAwait ( false ) ;
}
if ( rarity > 2 0 )
{
ulong toNextLvl = 0 ;
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
var user = Database . Fishing . FirstOrDefault ( x = > x . Id = = Context . User . Id ) ;
if ( inv . Any ( x = > x . Fish . Species = = fish & & x . Fish . Weight = = size & & x . Fish . Rarity = = rarmult ) )
{
inv . FirstOrDefault ( x = > x . Fish . Species = = fish & & x . Fish . Weight = = size & & x . Fish . Rarity = = rarmult ) . Amount + = 1 ;
}
else
{
inv . Add ( new FishingInventorySlot
{
Fish = new FishObject
{
Species = fish ,
Weight = size ,
Rarity = rarmult
} ,
Amount = 1
} ) ;
}
user . SetInventory ( inv ) ;
user . TXp + = xp ;
toNextLvl = user . Xp - user . TXp ;
if ( user . TXp > = user . Xp )
{
user . Lvl + = 1 ;
lvlXp = 5 0 ;
for ( ulong i = 0 ; i < user . Lvl ; i + + )
{
if ( i < = user . Lvl )
{
lvlXp + = Convert . ToUInt64 ( Math . Round ( ( lvlXp * 0.05d + 5 0d ) , 0 , MidpointRounding . ToEven ) ) ;
}
}
user . Xp = lvlXp ;
toNextLvl = user . Xp - user . TXp ;
level = user . Lvl ;
lvlUp = $"**You leveled up!** You are now **Level {level}**" ;
}
else
{
lvlUp = $"You need **{toNextLvl}**xp more to reach Level **{level + 1}**" ;
}
await Database . SaveChangesAsync ( ) . ConfigureAwait ( false ) ; // :]
}
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention}\n {emote} You have caught a {weight / 10d}kg **{fish}**, rarity: {rar}\nYou gain **{xp}**xp.\n{lvlUp}" ) ;
}
else
{
await Context . Channel . SendMessageAsync ( $"Your line snaps. Your disappointment is immeasurable, and your day is ruined." ) ;
}
}
else
{
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention} arrrrr-right, ye scurby bastard, I know yer eager t' scour the seven seas but ye needs t' wait till the next minute t' pillage the booty'o'the depths, savvy?" ) ;
}
}
[Command("inventory"),Alias("inv","fishinv")]
public async Task FishInventory ( )
{
Fishing user ;
List < FishingInventorySlot > inv = new List < FishingInventorySlot > ( ) ;
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
user = Database . Fishing . FirstOrDefault ( x = > x . Id = = Context . User . Id ) ;
if ( user = = null )
{
user = new Fishing
{
Id = Context . User . Id
} ;
Database . Fishing . Add ( user ) ;
}
else
{
inv = user . GetInventory ( ) ;
}
await Database . SaveChangesAsync ( ) . ConfigureAwait ( false ) ;
}
if ( inv . Any ( ) )
{
EmbedBuilder embed = new EmbedBuilder
{
Description = $"{Context.User.Mention}'s Inventory"
} ;
inv . ForEach ( x = >
{
string content = $"{x.Fish.Weight.ToString()} {x.Fish.Species.ToString()} " ;
embed . AddField ( content , x . Amount . ToString ( ) , true ) ;
} ) ;
await Context . Channel . SendMessageAsync ( embed : embed . Build ( ) ) . ConfigureAwait ( false ) ;
}
else
{
await Context . Channel . SendMessageAsync ( "Go fish nigger" ) . ConfigureAwait ( false ) ;
}
}
[Command("balance"),Alias("bal","money")]
public async Task Shekels ( [ Remainder ] IUser otherUser = null )
{
User user ;
User buser ;
User suser ;
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
user = Database . Users . FirstOrDefault ( x = > x . Id = = ( otherUser = = null ? Context . User . Id : otherUser . Id ) ) ;
buser = Database . Users . FirstOrDefault ( x = > x . Id = = 0 ) ;
suser = Database . Users . FirstOrDefault ( x = > x . Id = = 1 ) ;
}
if ( otherUser = = null )
{
if ( user = = null )
{
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
user = new User
{
Id = Context . User . Id ,
Avatar = Context . User . GetAvatarUrl ( ) ? ? Context . User . GetDefaultAvatarUrl ( ) ,
Username = Context . User . Username
} ;
Database . Users . Add ( user ) ;
await Database . SaveChangesAsync ( ) ;
}
}
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention} You own {user.Money / 10000d}%\nWhich is ~{Math.Round(((user.Money * 100d) / (1000000d - buser.Money - suser.Money)), 2, MidpointRounding.ToEven)}% of the money in circulation" ) ;
}
else
{
if ( user = = null )
{
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
user = new User
{
Id = Context . User . Id ,
Avatar = Context . User . GetAvatarUrl ( ) ? ? Context . User . GetDefaultAvatarUrl ( ) ,
Username = Context . User . Username
} ;
Database . Users . Add ( user ) ;
await Database . SaveChangesAsync ( ) ;
}
}
await Context . Channel . SendMessageAsync ( $"{otherUser.Mention} owns {user.Money / 10000d}%\nWhich is ~{Math.Round(((user.Money * 100d) / (1000000d - buser.Money - suser.Money)), 2, MidpointRounding.ToEven)}% of the money in circulation" ) ;
}
}
[Command("bank")]
public async Task BankBalance ( )
{
User user ;
User suser ;
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
user = Database . Users . FirstOrDefault ( x = > x . Id = = 0 ) ;
suser = Database . Users . FirstOrDefault ( x = > x . Id = = 1 ) ;
}
await Context . Channel . SendMessageAsync ( $"Bank has {user.Money/10000d}% left\nSkuld can currently sell a maximum of {suser.Money*64}₩ at 0.0001% = 64₩ exchange rate" ) ;
}
[Command("bet")]
public async Task Gamble ( int wager )
{
Random ran = new Random ( SRandom . Next ( 0 , 1 0 0 0 0 0 0 0 0 ) + int . Parse ( Context . User . AvatarId + Context . User . Discriminator ) ) ;
int res1 = ran . Next ( 0 , 1 1 ) ;
if ( res1 > = 5 )
{
res1 = ran . Next ( 5 0 , 1 0 1 ) ;
}
else
{
res1 = ran . Next ( 0 , 5 0 ) ;
}
if ( wager < 0 )
{
wager = 0 ;
}
int loss = wager ;
if ( res1 = = 1 0 0 )
{
wager = wager * 4 ;
}
else
{
if ( res1 > = 9 5 )
{
wager = wager * 3 ;
}
else
{
if ( res1 = = 7 7 )
{
wager = wager * 7 ;
}
else
{
if ( res1 < 5 0 )
{
wager = 0 ;
}
else
{
wager = wager * 2 ;
}
}
}
}
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
var user = Database . Users . FirstOrDefault ( x = > x . Id = = Context . User . Id ) ;
var buser = Database . Users . FirstOrDefault ( x = > x . Id = = 0 ) ;
if ( user . Money < loss )
{
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention} You can't afford that, go back to the mines." ) ;
}
else
{
if ( buser . Money > 1 0 0 )
{
if ( ! user . GrantMoney ( Database . Users . FirstOrDefault ( x = > x . Id = = 0 ) , ( wager ) - loss ) )
{
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention} Bank has no money, gamble more and lose please." ) ;
}
await Database . SaveChangesAsync ( ) ;
EmbedBuilder embed = new EmbedBuilder ( ) ;
if ( res1 = = 7 7 )
{
embed . AddField ( $"**Rolled: Lucky cat!**" , $"Result: +{((wager) - loss) / 10000d}%\nBalance: {(user.Money) / 10000d}%" ) ;
await ReplyAsync ( $"{Context.User.Mention}" , false , embed . Build ( ) ) ;
}
else
{
if ( ( ( wager ) - loss ) > 0 )
{
embed . AddField ( $"**Rolled: {res1}**" , $"Result: +{((wager) - loss) / 10000d}%\nBalance: {(user.Money) / 10000d}%" ) ;
await ReplyAsync ( $"{Context.User.Mention}" , false , embed . Build ( ) ) ;
}
if ( ( ( wager ) - loss ) < 0 )
{
embed . AddField ( $"**Rolled: {res1}**" , $"Result: {((wager) - loss) / 10000d}%\nBalance: {(user.Money) / 10000d}%" ) ;
await ReplyAsync ( $"{Context.User.Mention}" , false , embed . Build ( ) ) ;
}
}
}
else
{
await ReplyAsync ( $"Hey, stop that." ) ;
}
}
}
}
[Command("leaderboard"),Alias("top","lb")]
public async Task Leaderboard ( )
{
List < User > users ;
User bank ;
User skuld ;
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
users = Database . Users . OrderByDescending ( user = > user . Money ) . ToList ( ) ;
bank = Database . Users . FirstOrDefault ( x = > x . Id = = 0 ) ;
skuld = Database . Users . FirstOrDefault ( x = > x . Id = = 1 ) ;
}
users . Remove ( bank ) ;
users . Remove ( skuld ) ;
string leaderboardMessage = "**Top Ten Most Jewish Miners**:" ;
for ( int i = 0 ; i < 1 0 ; i + + )
{
string percent = $"{ users[i].Money / 10000d }" ;
string percentCirculating = $"{Math.Round(((users[i].Money * 100d) / (1000000d - bank.Money - skuld.Money)),2,MidpointRounding.ToEven)}" ;
leaderboardMessage + = $"\n**{users[i].Username}** : {percent}% ~ *{percentCirculating}% circulating*" ;
}
await Context . Channel . SendMessageAsync ( leaderboardMessage ) ;
}
[Command("give")]
public async Task GiveShekel ( IGuildUser person , int amount )
{
if ( amount > 0 )
{
using ( var Database = new ApplicationDbContextFactory ( ) . CreateDbContext ( ) )
{
var user = Database . Users . FirstOrDefault ( x = > x . Id = = Context . User . Id ) ;
if ( user . Money < amount )
{
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention} You don't have that much money??" ) ;
}
else
{
if ( user . Id = = person . Id )
{
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention} You have transferred your money to yourself???" ) ;
}
else
{
var transfer = amount - ( amount * 2 ) ;
if ( ! user . GrantMoney ( Database . Users . FirstOrDefault ( x = > x . Id = = person . Id ) , transfer ) )
{
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention} You can't afford that, go back to the mines." ) ;
}
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention} **{amount / 10000d}%** has been transferred from your account." ) ;
await Database . SaveChangesAsync ( ) ;
}
}
}
}
else
{
await Context . Channel . SendMessageAsync ( $"{Context.User.Mention} That's not how this works??" ) ;
}
}
}
//public class Event : ModuleBase<ICommandContext> /////////////////////////
//{
// [Command("coof"), Ratelimit(1, 1, Measure.Minutes)]
// public async Task Coof([Remainder] IGuildUser name)
// {
// var user = await Context.Guild.GetUserAsync(Context.User.Id).ConfigureAwait(false); ;
// if (user.RoleIds.Any(id => id == 672517021732438026))
// {
// var role = Context.Guild.GetRole(672517021732438026);
// var hearole = Context.Guild.GetRole(672759930666876991);
// if (name.RoleIds.Any(id => id == 672755435454988294))
// {
// await ReplyAsync($"{name.Mention}'s hazmat suit is protecting them from the corona");
// }
// else
// {
// await name.AddRoleAsync(role).ConfigureAwait(false);
// await name.RemoveRoleAsync(hearole).ConfigureAwait(false);
// Console.WriteLine($"{Context.User.Username} has infected {name.Username}");
// await ReplyAsync($"{Context.User.Mention} has infected {name.Mention}");
// await ReplyAsync($"Corona has been cured for now haha yeah");
// }
// }
// }
// [Command("cure"), Ratelimit(3, 30, Measure.Minutes)]
// public async Task Cure([Remainder] IGuildUser name)
// {
// var user = await Context.Guild.GetUserAsync(Context.User.Id).ConfigureAwait(false); ;
// if ((user.RoleIds.Any(id => id == 672755435454988294)) || (user.RoleIds.Any(id => id == 672759930666876991)))
// {
// var role = Context.Guild.GetRole(672759930666876991);
// var infrole = Context.Guild.GetRole(672517021732438026);
// if (name.RoleIds.Any(id => id == 672785044699611139))
// {
// await ReplyAsync($"{name.Mention} absolutely refuses to be vaccinated");
// }
// else
// {
// if (name.RoleIds.Any(id => id == 672517021732438026))
// {
// await name.AddRoleAsync(role).ConfigureAwait(false);
// await name.RemoveRoleAsync(infrole).ConfigureAwait(false);
// Console.WriteLine($"{Context.User.Username} has cured {name.Username}");
// await ReplyAsync($"{Context.User.Mention} has vaccinated {name.Mention}");
// }
// else
// {
// await ReplyAsync($"{name.Mention} is not infected??? are you super retarded???");
// }
// }
// }
// }
//}
public class Admin : ModuleBase ///////////////////////////////////////////////
{
[RequireRolePrecondition(AccessLevel.ServerAdmin)]
[Command("adddelet")]
public async Task AddDelet ( ) //Listens for attachments
{
var attachments = Context . Message . Attachments ; //Gets attachments as var
foreach ( var item in attachments )
{
Uri link = new Uri ( item . Url ) ;
using ( WebClient _ webclient = new WebClient ( ) )
{
string location = Path . Combine ( AppDomain . CurrentDomain . BaseDirectory , "delet" ) ;
if ( ! Directory . Exists ( location ) )
Directory . CreateDirectory ( location ) ;
location + = "/" + item . Filename ;
_ webclient . DownloadFileAsync ( link , location ) ;
}
await ReplyAsync ( $"Delet added" ) ;
break ;
}
}
[RequireRolePrecondition(AccessLevel.ServerAdmin)]
[Command("adddelet")]
public async Task AddDelet ( string url ) //Listens for urls
{
Uri link = new Uri ( url ) ;
using ( WebClient _ webclient = new WebClient ( ) )
{
string location = Path . Combine ( AppDomain . CurrentDomain . BaseDirectory , $"delet" ) ;
if ( ! Directory . Exists ( location ) )
Directory . CreateDirectory ( location ) ;
location + = "/" + Guid . NewGuid ( ) + ".jpg" ;
_ webclient . DownloadFileAsync ( link , location ) ;
}
await ReplyAsync ( $"Delet added" ) ;
}
[RequireRolePrecondition(AccessLevel.ServerAdmin)]
[Command("say")]
public async Task Say ( ITextChannel channel , [ Remainder ] string message )
{
await channel . SendMessageAsync ( message ) ;
}
[RequireRolePrecondition(AccessLevel.BotOwner)]
[Command("modifybot")]
public async Task ModifyBot ( string _ name )
{
//reference current bot user
var BotCurrUser = Bot . _ bot . CurrentUser ;
await BotCurrUser . ModifyAsync ( x = >
{
//sets name
x . Username = _ name ;
} ) ;
//reply
await ReplyAsync ( $"Set name to {_name}" ) ;
}
[RequireRolePrecondition(AccessLevel.BotOwner)]
[Command("getstamp")]
public async Task YeedraStamp ( )
{
ulong stamp = DateTime . UtcNow . ToYeedraStamp ( ) ;
await ReplyAsync ( $"{Context.User.Mention} {stamp}" ) ;
}
[RequireRolePrecondition(AccessLevel.BotOwner)]
[Command("savefile")]
public async Task SaveFile ( string fday , string fscore )
{
string location = Path . Combine ( AppDomain . CurrentDomain . BaseDirectory , "drawtasks" ) ;
string tlocation = ( $"{location}/days.txt" ) ;
var attachments = Context . Message . Attachments ;
string fname = $"{fday}-{fscore}" ;
if ( File . Exists ( location + "/days.txt" ) )
{
}
foreach ( var item in attachments )
{
Uri link = new Uri ( item . Url ) ;
using ( WebClient _ webclient = new WebClient ( ) )
{
if ( ! Directory . Exists ( location ) )
Directory . CreateDirectory ( location ) ;
location + = ( $"/{fday}-{fscore}.jpg" ) ;
_ webclient . DownloadFileAsync ( link , location ) ;
}
await ReplyAsync ( $"Post archived" ) ;
break ;
}
}
}
//public class _ : ModuleBase
//{
// [RequireRolePrecondition(AccessLevel.BotOwner)]
// [Command("embedtest")]
// public async Task Embedthing(bool inline, [Remainder]string text)
// {
// var BotUser = await Bot._bot.GetApplicationInfoAsync();
// EmbedBuilder embed = new EmbedBuilder();
// EmbedAuthorBuilder author = new EmbedAuthorBuilder();
// EmbedFooterBuilder footer = new EmbedFooterBuilder();
// //author stuff
// author.Name = BotUser.Name;
// author.IconUrl = BotUser.IconUrl;
// embed.Author = author;
// //footer stuff
// footer.Text = "Given at";
// embed.Footer = footer;
// //embed stuff
// embed.Timestamp = DateTime.Now;
// embed.AddInlineField("test 1", "test 1");
// embed.AddInlineField("test 2", "test 2");
// embed.AddField(x =>
// {
// x.IsInline = inline;
// x.Name = "Test Embed";
// x.Value = text;
// });
// await ReplyAsync("This is an embed test, I think I did it...", false, embed);
// }
//}
}