Merge branch 'develop' into 'master'
Develop See merge request discord-bots/chaosbot!14
This commit is contained in:
commit
f332c1c368
@ -40,7 +40,7 @@ namespace ChaosBot.Discord.Modules.User
|
|||||||
|
|
||||||
if (usrXp.Any())
|
if (usrXp.Any())
|
||||||
{
|
{
|
||||||
ulong nextLevelXP = 5 / 6 * usrXp.First().Level * (2 * usrXp.First().Level * usrXp.First().Level + 27 * usrXp.First().Level + 91);
|
ulong nextLevelXP = 1 * usrXp.First().Level * (2 * usrXp.First().Level * usrXp.First().Level + 27 * usrXp.First().Level + 91);
|
||||||
sb.AppendLine($"Name: {Context.User.Mention}");
|
sb.AppendLine($"Name: {Context.User.Mention}");
|
||||||
sb.AppendLine($"\tLevel: {usrXp.First().Level}");
|
sb.AppendLine($"\tLevel: {usrXp.First().Level}");
|
||||||
sb.AppendLine($"\tExperience: {usrXp.First().Amount}");
|
sb.AppendLine($"\tExperience: {usrXp.First().Amount}");
|
||||||
@ -49,9 +49,9 @@ namespace ChaosBot.Discord.Modules.User
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
sb.AppendLine($"Name: {Context.User.Mention}");
|
sb.AppendLine($"Name: {Context.User.Mention}");
|
||||||
sb.AppendLine($"\tLevel: 0");
|
sb.AppendLine($"\tLevel: 1");
|
||||||
sb.AppendLine($"\tExperience: 0");
|
sb.AppendLine($"\tExperience: 0");
|
||||||
sb.AppendLine($"\tNeeded to Level: 123");
|
sb.AppendLine($"\tNeeded to Level: 120");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,15 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using ChaosBot.Discord.Modules.User;
|
||||||
|
using ChaosBot.Models;
|
||||||
using ChaosBot.Repositories;
|
using ChaosBot.Repositories;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Discord;
|
using Discord;
|
||||||
using Discord.Commands;
|
using Discord.Commands;
|
||||||
using Discord.WebSocket;
|
using Discord.WebSocket;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using NLog;
|
using NLog;
|
||||||
|
|
||||||
namespace ChaosBot.Discord.Services
|
namespace ChaosBot.Discord.Services
|
||||||
@ -29,6 +32,10 @@ namespace ChaosBot.Discord.Services
|
|||||||
_commands.CommandExecuted += CommandExecutedAsync;
|
_commands.CommandExecuted += CommandExecutedAsync;
|
||||||
|
|
||||||
_client.MessageReceived += MessageReceivedAsync;
|
_client.MessageReceived += MessageReceivedAsync;
|
||||||
|
|
||||||
|
_client.UserJoined += AnnounceJoinedUser;
|
||||||
|
|
||||||
|
_client.UserLeft += AnnounceLeftUser;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -74,6 +81,119 @@ namespace ChaosBot.Discord.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task AnnounceJoinedUser(SocketGuildUser user)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (ChaosbotContext dbContext = new ChaosbotContext())
|
||||||
|
{
|
||||||
|
Experience newUser = new Experience();
|
||||||
|
newUser.Amount = 0;
|
||||||
|
newUser.DiscordGuildId = user.Guild.Id;
|
||||||
|
newUser.DiscordUserId = user.Id;
|
||||||
|
newUser.LastUpdated = DateTime.Now.Subtract(TimeSpan.FromMinutes(1));
|
||||||
|
newUser.Level = 1;
|
||||||
|
|
||||||
|
await dbContext.ExperiencePoints.Upsert(newUser)
|
||||||
|
.On(x => new {x.DiscordGuildId, x.DiscordUserId}).RunAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
string ConfigSet = ConfigurationRepository.GetValue<string>("LevelUp:Channel", user.Guild.Id, "false");
|
||||||
|
if (ConfigSet != "false")
|
||||||
|
{
|
||||||
|
ulong channelId = Convert.ToUInt64(ConfigSet.Substring(2, ConfigSet.Length - 3));
|
||||||
|
|
||||||
|
await user.Guild.GetTextChannel(channelId).SendMessageAsync(
|
||||||
|
$"Welcome {user.Mention}!");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await user.Guild.SystemChannel.SendMessageAsync($"Welcome {user.Mention}!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.Error(
|
||||||
|
$"{MethodBase.GetCurrentMethod().ReflectedType.FullName}: Exception [{ex}] thrown, <[{ex.Message}]>.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task AnnounceLeftUser(SocketGuildUser user)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (ChaosbotContext dbContext = new ChaosbotContext())
|
||||||
|
{
|
||||||
|
IQueryable<Experience> ctxUser = dbContext.ExperiencePoints;
|
||||||
|
IQueryable<Experience> usrXp = ctxUser
|
||||||
|
.Where(p => p.DiscordGuildId.Equals(user.Guild.Id))
|
||||||
|
.Where(p => p.DiscordUserId.Equals(user.Id));
|
||||||
|
|
||||||
|
if (usrXp.Any())
|
||||||
|
{
|
||||||
|
dbContext.ExperiencePoints.Remove(usrXp.First());
|
||||||
|
await dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
IQueryable<LodestoneCharacter> ctxUserLS = dbContext.LodestoneCharacter;
|
||||||
|
IQueryable<LodestoneCharacter> userChar = ctxUserLS
|
||||||
|
.Where(p => p.DiscordGuildId.Equals(user.Guild.Id))
|
||||||
|
.Where(p => p.DiscordUserId.Equals(user.Id));
|
||||||
|
|
||||||
|
if (userChar.Any())
|
||||||
|
{
|
||||||
|
dbContext.LodestoneCharacter.Remove(userChar.First());
|
||||||
|
await dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
IQueryable<Raffle> ctxRaffles = dbContext.Raffles;
|
||||||
|
|
||||||
|
IQueryable<Raffle> ctxRaffleDetail = ctxRaffles
|
||||||
|
.Where(p => p.DiscordGuildId.Equals(user.Guild.Id))
|
||||||
|
.Where(p => p.DiscordUserId.Equals(user.Id));
|
||||||
|
|
||||||
|
int cur = ctxRaffleDetail.Count();
|
||||||
|
|
||||||
|
if (cur != 0)
|
||||||
|
{
|
||||||
|
dbContext.Raffles.RemoveRange(ctxRaffleDetail);
|
||||||
|
await dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
Point usrPoint = new Point();
|
||||||
|
|
||||||
|
usrPoint.Amount = 0;
|
||||||
|
usrPoint.DiscordGuildId = user.Guild.Id;
|
||||||
|
usrPoint.DiscordUserId = user.Id;
|
||||||
|
|
||||||
|
await dbContext.Points.Upsert(usrPoint)
|
||||||
|
.On(x => new { x.DiscordGuildId, x.DiscordUserId}).RunAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
string ConfigSet = ConfigurationRepository.GetValue<string>("LevelUp:Channel", user.Guild.Id, "false");
|
||||||
|
if (ConfigSet != "false")
|
||||||
|
{
|
||||||
|
ulong channelId = Convert.ToUInt64(ConfigSet.Substring(2, ConfigSet.Length - 3));
|
||||||
|
|
||||||
|
await user.Guild.GetTextChannel(channelId).SendMessageAsync(
|
||||||
|
$"Goodbye {user.Mention}!");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await user.Guild.SystemChannel.SendMessageAsync($"Goodbye {user.Mention}!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.Error(
|
||||||
|
$"{MethodBase.GetCurrentMethod().ReflectedType.FullName}: Exception [{ex}] thrown, <[{ex.Message}]>.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async Task CommandExecutedAsync(Optional<CommandInfo> command, ICommandContext context, IResult result)
|
public async Task CommandExecutedAsync(Optional<CommandInfo> command, ICommandContext context, IResult result)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
@ -91,8 +91,9 @@ namespace ChaosBot.Discord.Services
|
|||||||
{
|
{
|
||||||
// var xp_to_desired_level = 5 / 6 * desired_level * (2 * desired_level * desired_level + 27 * desired_level + 91);
|
// var xp_to_desired_level = 5 / 6 * desired_level * (2 * desired_level * desired_level + 27 * desired_level + 91);
|
||||||
|
|
||||||
ulong nextLevelXP = 5 / 6 * usrExperience.Level * (2 * usrExperience.Level * usrExperience.Level + 27 * usrExperience.Level + 91);
|
var nextLevelXP = 1 * usrExperience.Level * (2 * usrExperience.Level * usrExperience.Level + 27 * usrExperience.Level + 91);
|
||||||
|
|
||||||
|
Console.WriteLine(nextLevelXP);
|
||||||
if (usrExperience.Amount > nextLevelXP)
|
if (usrExperience.Amount > nextLevelXP)
|
||||||
{
|
{
|
||||||
curLevel = usrExperience.Level + 1;
|
curLevel = usrExperience.Level + 1;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user