Made it look better ong

This commit is contained in:
2026-02-26 16:48:12 +00:00
parent 581d62efdc
commit 6875ba878d
3 changed files with 109 additions and 65 deletions

View File

@@ -1,7 +1,7 @@
using Valour.Sdk.Client; using Valour.Sdk.Client;
using Valour.Sdk.Models; using Valour.Sdk.Models;
using DotNetEnv; using DotNetEnv;
using System.Globalization; using SkyBot;
Env.Load(); Env.Load();
@@ -16,13 +16,14 @@ if (string.IsNullOrWhiteSpace(token))
} }
var loginResult = await client.InitializeUser(token); var loginResult = await client.InitializeUser(token);
await client.BotService.JoinAllChannelsAsync();
if (!loginResult.Success) if (!loginResult.Success)
{ {
Console.WriteLine($"Login Failed: {loginResult.Message}"); Console.WriteLine($"Login Failed: {loginResult.Message}");
return; return;
} }
await client.BotService.JoinAllChannelsAsync();
var channelCache = new Dictionary<long, Channel>(); var channelCache = new Dictionary<long, Channel>();
foreach (var planet in client.PlanetService.JoinedPlanets) foreach (var planet in client.PlanetService.JoinedPlanets)
@@ -35,6 +36,7 @@ foreach (var planet in client.PlanetService.JoinedPlanets)
} }
Console.WriteLine($"Logged in as {client.Me.Name} (ID: {client.Me.Id})"); Console.WriteLine($"Logged in as {client.Me.Name} (ID: {client.Me.Id})");
var allowedUserIds = new List<long> { 15652354820931584 }; var allowedUserIds = new List<long> { 15652354820931584 };
@@ -42,90 +44,68 @@ var allowedUserIds = new List<long> { 15652354820931584 };
client.MessageService.MessageReceived += async (message) => client.MessageService.MessageReceived += async (message) =>
{ {
string content = message.Content; string content = message.Content ?? "";
string lowerContent = content?.ToLower() ?? ""; long channelId = message.ChannelId;
var member = await message.FetchAuthorMemberAsync();
if (content is null) return;
if (message.AuthorUserId == client.Me.Id) return; if (message.AuthorUserId == client.Me.Id) return;
if (allowedUserIds.Contains(message.AuthorUserId)) if (allowedUserIds.Contains(message.AuthorUserId))
{ {
if (IsSingleEmoji(message.Content)) if (Utils.IsSingleEmoji(content))
{ {
await message.AddReactionAsync(message.Content); await message.AddReactionAsync(content);
} }
} }
if (lowerContent.StartsWith("/sky echo ")) if (content.StartsWith("/sky echo"))
{ {
if (message.AuthorUserId != 15652354820931584) // if (message.AuthorUserId != 15652354820931584) await Utils.SendReplyAsync(channelCache, channelId, "You dont have permission to use this command.");
var reply = content.Substring(10);
if (reply is null) await Utils.SendReplyAsync(channelCache, channelId, $"«@m-{member.Id}» Enter a message to echo.");
reply = $"«@m-{member.Id}» {reply}";
if (reply.Length > 2048)
{ {
if (channelCache.TryGetValue(message.ChannelId, out var chan)) reply = reply.Substring(0, 2048);
{
await chan.SendMessageAsync("You dont have permission to use this command.");
return;
}
} }
var reply = message.Content.Substring(10); await Utils.SendReplyAsync(channelCache, channelId, reply);
};
if (channelCache.TryGetValue(message.ChannelId, out var channel)) if (Utils.ContainsAny(content, "/sky valourroadmap", "s/valourroadmap"))
{
await channel.SendMessageAsync(reply);
}
else
{
Console.WriteLine($"Channel {message.ChannelId} not found in cache.");
}
}
if (lowerContent.Contains("/sky roadmap"))
{ {
if (channelCache.TryGetValue(message.ChannelId, out var channel)) await Utils.SendReplyAsync(channelCache, channelId, @$"«@m-{member.Id}» Here is the up-to-date roadmap for Valour:
{ ~~1. Screen sharing~~
var messageText = @"~~1. Screen sharing~~ 2. Documentation
2. Documentation 3. Themes Improvements
3. Themes Improvements 4. App stores
4. App stores 5. Windows native bugs
5. Windows native bugs 6. Tab system bugs
6. Tab system bugs 7. Automod/planet moderation");
7. Automod/planet moderation";
await channel.SendMessageAsync(messageText);
}
} }
if (lowerContent.Contains("/sky suggestcommands") || lowerContent.Contains("/sky suggestcommand") || lowerContent.Contains("/sky suggest")) if (Utils.ContainsAny(content, "/sky suggestcommand", "/sky suggestcommands", "/sky suggest", "s/suggestcommand", "s/suggestcommands", "s/suggest"))
{ {
if (channelCache.TryGetValue(message.ChannelId, out var channel)) await Utils.SendReplyAsync(channelCache, channelId, $"«@m-{member.Id}» You can suggest a command to be added here: https://docs.google.com/spreadsheets/d/1CzcpLAuMiPL_RODrZ5x25cPj8yE-rR3mEnqrd_2Fbmk");
{ };
await channel.SendMessageAsync("You can suggest a command to be added here: https://docs.google.com/spreadsheets/d/1CzcpLAuMiPL_RODrZ5x25cPj8yE-rR3mEnqrd_2Fbmk");
}
}
if (lowerContent.Contains("/sky source") || lowerContent.Contains("/sky github")) if (Utils.ContainsAny(content, "/sky source", "/sky github", "s/source", "s/github"))
{ {
if (channelCache.TryGetValue(message.ChannelId, out var channel)) await Utils.SendReplyAsync(channelCache, channelId, $"«@m-{member.Id}» You can see my source code here: https://github.com/SkyJoshua/SkyBot");
{ };
await channel.SendMessageAsync("You can see the sourcecode for this bot here: https://github.com/SkyJoshua/SkyBot");
} if (Utils.ContainsAny(content, "/sky test"))
} {
await Utils.SendReplyAsync(channelCache, channelId, "test");
};
}; };
Console.WriteLine("Listening for messages..."); Console.WriteLine("Listening for messages...");
await Task.Delay(Timeout.Infinite); await Task.Delay(Timeout.Infinite);
static bool IsSingleEmoji(string input)
{
if (string.IsNullOrWhiteSpace(input))
return false;
input = input.Trim();
var enumerator = StringInfo.GetTextElementEnumerator(input);
int count = 0;
while (enumerator.MoveNext())
count++;
return count == 1;
}

15
SkyBot.csproj Normal file
View File

@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="DotNetEnv" Version="3.1.1" />
<PackageReference Include="Valour.Sdk" Version="0.5.19" />
</ItemGroup>
</Project>

49
utils.cs Normal file
View File

@@ -0,0 +1,49 @@
using System.Globalization;
using Valour.Sdk.Models;
namespace SkyBot
{
public static class Utils
{
public static bool IsSingleEmoji(string input)
{
if (string.IsNullOrWhiteSpace(input))
return false;
input = input.Trim();
var enumerator = StringInfo.GetTextElementEnumerator(input);
int count = 0;
while (enumerator.MoveNext())
count++;
return count == 1;
}
public static bool ContainsAny(string input, params string[] values)
{
var lower = input.ToLower();
foreach (var value in values)
{
if (lower.Contains(value.ToLower()))
return true;
};
return false;
}
public static async Task SendReplyAsync(Dictionary<long, Channel> channelCache, long channel, string reply)
{
if (channelCache.TryGetValue(channel, out var chan))
{
await chan.SendMessageAsync(reply);
}
else
{
Console.WriteLine($"Channel {channel} was not found in the cache.");
};
}
};
};