oh yeah woo yeah
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Kehyeedra/Kehyeedra3/Commands.cs

1064 lines
42 KiB

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(114, 137, 218),
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, 255, 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, 101);
if (trapRating0 == 100)
{
int trapRating1 = rando1.Next(0, 1001);
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, 101);
if (trapRating0 == 100)
{
int trapRating1 = rando1.Next(0, 1001);
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 * 86400) + (h * 3600) + (m * 60)) + 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");
}
}
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 FishSpecies[] ufish = new FishSpecies[]
{
FishSpecies.Gigacrab,
FishSpecies.Frogfish,
FishSpecies.Stargazer,
FishSpecies.Isopod,
FishSpecies.Sheephead,
};
readonly FishSpecies[] cfish = new FishSpecies[]
{
FishSpecies.Cod,
FishSpecies.Salmon,
FishSpecies.Bass,
FishSpecies.Crayfish,
FishSpecies.Betta,
FishSpecies.Pufferfish,
FishSpecies.Carp,
FishSpecies.Megacrab
};
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, 101);
int res2 = SRandom.Next(0, 101);
int res3 = SRandom.Next(0, 101);
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 > 20)
{
end = 1;
marks = $"{o}{n}{n}";
if (res2 > 50)
{
end = 2;
marks = $"{o}{o}{n}";
if (res3 > 80)
{
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, 201));
ulong rarity = level + (ulong)rari;
FishRarity rarmult;
string rar = "";
FishSpecies fish ;
if (rarity > 180)
{
rar = "*Rare*";
rarmult = FishRarity.Rare;
int num = SRandom.Next(rfish.Length);
fish = rfish[num];
xp = 3;
}
else
{
if (rarity > 120)
{
rar = "*Uncommon*";
rarmult = FishRarity.Uncommon;
int num = SRandom.Next(ufish.Length);
fish = ufish[num];
xp = 2;
}
else
{
if (rarity == 77)
{
rar = "***Legendary***";
rarmult = FishRarity.Legendary;
fish = FishSpecies.LuckyCatfish;
xp = 7;
}
else
{
rar = "*Common*";
rarmult = FishRarity.Common;
int num = SRandom.Next(cfish.Length);
fish = cfish[num];
xp = 1;
}
}
}
int weight = SRandom.Next(1, 151);
FishWeight size;
if (weight >= 75)
{
size = FishWeight.Medium;
if (weight >= 100)
{
weight = SRandom.Next(1, 201);
}
}
else
{
size = FishWeight.Small;
}
if (weight >= 150 || rarmult == FishRarity.Legendary)
{
size = FishWeight.Large;
}
if (rarity > 20)
{
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.LastFish = time;
user.TXp += xp;
await Database.SaveChangesAsync().ConfigureAwait(false); // :]
}
await Context.Channel.SendMessageAsync($"{Context.User.Mention} You have caught a {weight / 10d}kg **{fish}**, rarity: {rar}");
}
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 you scurby bastard, I know you're eager to scour the seven seas but you need to wait till the next minute to access the treasure cove'o'tha depths");
}
}
[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();
embed.Description = $"{Context.User.Mention}'s Inventory";
inv.ForEach(x =>
{
embed.AddField(x.Fish.ToString(), x.Amount.ToString(), true);
});
//fishgohere
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, 100000000) + int.Parse(Context.User.AvatarId + Context.User.Discriminator));
int res1 = ran.Next(0, 11);
if (res1 >= 5)
{
res1 = ran.Next(50, 101);
}
else
{
res1 = ran.Next(0, 50);
}
if (wager<0)
{
wager = 0;
}
int loss = wager;
if (res1 == 100)
{
wager = wager*4;
}
else
{
if (res1 >= 95)
{
wager = wager * 3;
}
else
{
if (res1 == 77)
{
wager = wager * 7;
}
else
{
if (res1 < 50)
{
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 > 100)
{
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 == 77)
{
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 < 10; 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);
// }
//}
}