first commit

This commit is contained in:
balos 2025-04-26 20:05:22 +02:00
commit f680dd869b
6 changed files with 166 additions and 0 deletions

5
.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
bin/
obj/
.env
databases/

18
bot.csproj Normal file
View file

@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>false</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="DotNetEnv" Version="3.1.1" />
<PackageReference Include="DSharpPlus" Version="4.5.1" />
<PackageReference Include="DSharpPlus.CommandsNext" Version="4.5.1" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="9.0.4" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="9.0.4" />
</ItemGroup>
</Project>

18
commands/admin.cs Normal file
View file

@ -0,0 +1,18 @@
using DSharpPlus.CommandsNext;
using DSharpPlus.CommandsNext.Attributes;
using System.Threading.Tasks;
using System.Linq;
public class HasAdminRole : CheckBaseAttribute
{
public override async Task<bool> ExecuteCheckAsync(CommandContext ctx, bool help)
{
bool hasAdminRole = ctx.Member?.Roles.Any(role => role.Name == "Admin") ?? false;
if (!hasAdminRole)
{
await ctx.RespondAsync("Csicskáknak kuss van !");
}
return (hasAdminRole);
}
}

19
commands/hello.cs Normal file
View file

@ -0,0 +1,19 @@
using DSharpPlus.CommandsNext;
using DSharpPlus.CommandsNext.Attributes;
using System.Threading.Tasks;
namespace Commands
{
public class Hello : BaseCommandModule
{
[Command("hello")]
[Description("Beköszönés. Hello World")]
[HasAdminRole]
public async Task HelloCommand(CommandContext ctx)
{
await ctx.RespondAsync($"Szia! T3kerg0 vagyok!");
}
}
}

59
events/reaction-roles.cs Normal file
View file

@ -0,0 +1,59 @@
using DSharpPlus;
using DSharpPlus.EventArgs;
using Microsoft.Data.Sqlite;
using System.Threading.Tasks;
using System;
namespace T3k3rg0
{
public static class ReactionRoleHandler
{
public static void Register(DiscordClient discord)
{
discord.MessageReactionAdded += OnReactionAdded;
discord.MessageReactionRemoved += OnReactionRemoved;
}
private static async Task OnReactionAdded(DiscordClient client, MessageReactionAddEventArgs e)
{
if (e.User.IsBot) return;
var dbPath = Environment.GetEnvironmentVariable("DB_ROLES_LOC");
using var connection = new SqliteConnection($"Data Source={dbPath}");
connection.Open();
var command = connection.CreateCommand();
command.CommandText = @"SELECT role_id FROM reaction_roles WHERE message_id = $message_id AND emoji = $emoji";
command.Parameters.AddWithValue("$message_id", e.Message.Id);
command.Parameters.AddWithValue("$emoji", e.Emoji.ToString());
var roleId = (long?)command.ExecuteScalar();
if (roleId == null) return;
var member = await e.Guild.GetMemberAsync(e.User.Id);
var role = e.Guild.GetRole((ulong)roleId);
await member.GrantRoleAsync(role);
}
private static async Task OnReactionRemoved(DiscordClient client, MessageReactionRemoveEventArgs e)
{
if (e.User.IsBot) return;
var dbPath = Environment.GetEnvironmentVariable("DB_ROLES_LOC");
using var connection = new SqliteConnection($"Data Source={dbPath}");
connection.Open();
var command = connection.CreateCommand();
command.CommandText = @"SELECT role_id FROM reaction_roles WHERE message_id = $message_id AND emoji = $emoji";
command.Parameters.AddWithValue("$message_id", e.Message.Id);
command.Parameters.AddWithValue("$emoji", e.Emoji.ToString());
var roleId = (long?)command.ExecuteScalar();
if (roleId == null) return;
var member = await e.Guild.GetMemberAsync(e.User.Id);
var role = e.Guild.GetRole((ulong)roleId);
await member.RevokeRoleAsync(role);
}
}
}

47
program.cs Normal file
View file

@ -0,0 +1,47 @@
using DSharpPlus;
using DSharpPlus.CommandsNext;
using System.Threading.Tasks;
using System;
using DotNetEnv;
using Microsoft.Extensions.Logging;
namespace T3k3rg0
{
public class Program
{
static async Task Main(string[] args)
{
Env.Load(); // .env fájl betöltése
var discord = new DiscordClient(new DiscordConfiguration()
{
Token = Environment.GetEnvironmentVariable("DISCORD_BOT_TOKEN"),
TokenType = TokenType.Bot,
Intents = DiscordIntents.All,
MinimumLogLevel = LogLevel.Debug,
LoggerFactory = LoggerFactory.Create(builder =>
{
builder.AddConsole();
builder.SetMinimumLevel(LogLevel.Debug);
})
});
var commands = discord.UseCommandsNext(new CommandsNextConfiguration()
{
StringPrefixes = new[] { "!" },
EnableDms = false,
EnableMentionPrefix = true
});
commands.RegisterCommands<Commands.Hello>();
ReactionRoleHandler.Register(discord);
discord.Ready += async (s, e) =>
{
Console.WriteLine("T3k3rg0 elindult !");
};
await discord.ConnectAsync();
await Task.Delay(-1);
}
}
}