I am a failure :c

This commit is contained in:
2026-03-01 03:39:44 +00:00
parent df122f1470
commit fda66681b6
6 changed files with 263 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ namespace Reactor.Services
public static async Task InitializeAsync()
{
//Connection frfr
using var connection = new SqliteConnection(_connectionString);
await connection.OpenAsync();

View File

@@ -12,6 +12,7 @@ namespace Reactor.Services
Message message,
string prefix)
{
//Bot cant reply to its self hahahahahaha loser!
if (message.AuthorUserId == client.Me.Id) return;
string content = message.Content ?? "";
@@ -31,6 +32,7 @@ namespace Reactor.Services
string command = parts[0].ToLower();
string[] args = parts[1..];
//Commands.. duh..
switch (command)
{
case "help":
@@ -40,6 +42,47 @@ namespace Reactor.Services
case "source":
await SourceCommand.Execute(channelCache, channelId, memberPing);
break;
case "create":
if (parts.Length < 2)
{
await channelCache[channelId].SendMessageAsync($"{memberPing} Usage: {prefix}create <default message text>");
return;
}
if (message.PlanetId == null)
{
await channelCache[channelId].SendMessageAsync($"{memberPing} Could not detect planet ID for this message. Please contact me if you are seeing this.");
return;
}
var messageText = string.Join(' ', parts[1..]);
await CreateCommand.Execute(channelCache, channelId, messageText, message.PlanetId.Value);
break;
case "add":
if (parts.Length < 4)
{
await channelCache[channelId].SendMessageAsync($"{memberPing} Usage: {prefix}add <messageId> <emoji> <roleId>");
return;
}
if (!long.TryParse(parts[1], out var msgId))
{
await channelCache[channelId].SendMessageAsync($"{memberPing} Invalid message ID.");
return;
}
var emoji = parts[2];
if (!long.TryParse(parts[3], out var roleId))
{
await channelCache[channelId].SendMessageAsync($"{memberPing} Invalid role ID.");
return;
}
await AddCommand.Execute(channelCache, channelId, msgId, emoji, roleId, client, message.Planet);
break;
}
}
}

View File

@@ -1,5 +1,7 @@
using Microsoft.Data.Sqlite;
using Reactor.Models;
using Valour.Sdk.Client;
using Valour.Sdk.Models;
namespace Reactor.Services
{
@@ -77,5 +79,96 @@ namespace Reactor.Services
//Update Cache
msg.Reactions[emoji] = roleId;
}
public static async Task HandleReactionAddedAsync(
Dictionary<long, Channel> channelCache,
Message message)
{
if (!Messages.TryGetValue(message.Id, out var cachedMsg))
return;
if (!channelCache.TryGetValue(cachedMsg.ChannelId, out var channel))
return;
foreach (var kvp in message.Reactions)
{
string emoji = kvp.Emoji;
if (!cachedMsg.Reactions.TryGetValue(emoji, out var roleId))
continue;
//Fetch role name
var role = channel.Planet.Roles.FirstOrDefault(r => r.Id == roleId);
string roleName = role != null ? role.Name : $"Role {roleId}";
//Fetch member
var member = await channel.Planet.FetchMemberAsync(kvp.AuthorUserId);
if (member == null) return;
//Apply role to user
await member.AddRoleAsync(roleId);
//Confirmation
var confirm = await channel.SendMessageAsync($"«@m-{member.Id}» has been given the role {roleName}");
await Task.Delay(cachedMsg.DeleteDelaySeconds * 1000);
await confirm.Data.DeleteAsync();
}
}
// public static async Task HandleReactionAddedAsync(
// ValourClient client,
// Dictionary<long, Channel> channelCache,
// MessageReaction reaction)
// {
// if (!Messages.TryGetValue(reaction.MessageId, out var msg))
// return;
// if (!msg.Reactions.TryGetValue(reaction.Emoji, out var roleId))
// return;
// if (!channelCache.TryGetValue(msg.ChannelId, out var channel))
// return;
// var role = channel.Planet.Roles.FirstOrDefault(r => r.Id == roleId);
// string roleName = role != null ? role.Name : $"Role {roleId}";
// //Fetch the member
// var member = await channel.Planet.FetchMemberAsync(reaction.AuthorUserId);
// if (member == null) return;
// //Add role
// await member.AddRoleAsync(roleId);
// //Confirmation
// var confirm = await channel.SendMessageAsync($"«@m-{member.Id}» has been given the role {roleName}");
// await Task.Delay(msg.DeleteDelaySeconds * 1000);
// await confirm.Data.DeleteAsync();
// }
// public static async Task HandleReactionRemovedAsync(
// ValourClient client,
// Dictionary<long, Channel> channelCache,
// MessageReaction reaction)
// {
// if (!Messages.TryGetValue(reaction.MessageId, out var msg))
// return;
// if (!msg.Reactions.TryGetValue(reaction.Emoji, out var roleId))
// return;
// if (!channelCache.TryGetValue(msg.ChannelId, out var channel))
// return;
// var role = channel.Planet.Roles.FirstOrDefault(r => r.Id == roleId);
// string roleName = role != null ? role.Name : $"role {roleId}";
// var member = await channel.Planet.FetchMemberAsync(reaction.AuthorUserId);
// if (member == null) return;
// await member.RemoveRoleAsync(roleId);
// var confirm = await channel.SendMessageAsync($"«@m-{member.Id}» has been removed from the role {roleName}");
// await Task.Delay(msg.DeleteDelaySeconds * 1000);
// await confirm.Data.DeleteAsync();
// }
}
}