aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.idx/dev.nix56
-rw-r--r--commands/admin/kick.go50
-rw-r--r--commands/commands.go14
-rw-r--r--handlers/guildMemberAdd.go17
-rw-r--r--handlers/interactionCreateHandler.go1
-rw-r--r--handlers/messageHandlers/poketwoHandler.go3
-rw-r--r--yuzaki/main.go1
7 files changed, 141 insertions, 1 deletions
diff --git a/.idx/dev.nix b/.idx/dev.nix
new file mode 100644
index 0000000..f1d9895
--- /dev/null
+++ b/.idx/dev.nix
@@ -0,0 +1,56 @@
+# To learn more about how to use Nix to configure your environment
+# see: https://developers.google.com/idx/guides/customize-idx-env
+{ pkgs, ... }: {
+ # Which nixpkgs channel to use.
+ channel = "stable-24.05"; # or "unstable"
+
+ # Use https://search.nixos.org/packages to find packages
+ packages = [
+ pkgs.go
+ pkgs.gnumake
+ # pkgs.python311
+ # pkgs.python311Packages.pip
+ # pkgs.nodejs_20
+ # pkgs.nodePackages.nodemon
+ ];
+
+ # Sets environment variables in the workspace
+ env = {};
+ idx = {
+ # Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
+ extensions = [
+ # "vscodevim.vim"
+ ];
+
+ # Enable previews
+ previews = {
+ enable = true;
+ previews = {
+ # web = {
+ # # Example: run "npm run dev" with PORT set to IDX's defined port for previews,
+ # # and show it in IDX's web preview panel
+ # command = ["npm" "run" "dev"];
+ # manager = "web";
+ # env = {
+ # # Environment variables to set for your server
+ # PORT = "$PORT";
+ # };
+ # };
+ };
+ };
+
+ # Workspace lifecycle hooks
+ workspace = {
+ # Runs when a workspace is first created
+ onCreate = {
+ # Example: install JS dependencies from NPM
+ # npm-install = "npm install";
+ };
+ # Runs when the workspace is (re)started
+ onStart = {
+ # Example: start a background task to watch and re-build backend code
+ # watch-backend = "npm run watch-backend";
+ };
+ };
+ };
+}
diff --git a/commands/admin/kick.go b/commands/admin/kick.go
new file mode 100644
index 0000000..f7ab0d2
--- /dev/null
+++ b/commands/admin/kick.go
@@ -0,0 +1,50 @@
+package admin
+
+import (
+ //"fmt"
+ "log"
+ //"time"
+
+ "yuzaki/utils"
+
+ "github.com/bwmarrin/discordgo"
+)
+
+func KickMember(s *discordgo.Session, i *discordgo.InteractionCreate) {
+ err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
+ Type: discordgo.InteractionResponseDeferredChannelMessageWithSource,
+ Data: &discordgo.InteractionResponseData{
+ Flags: discordgo.MessageFlagsEphemeral,
+ },
+ })
+ if err != nil {
+ log.Printf("Error responding to interaction: %s. Interaction: purge. Interaction By: %s\n", err, i.Member.DisplayName())
+ return
+ }
+
+ options := i.ApplicationCommandData().Options
+ optionMap := make(map[string]*discordgo.ApplicationCommandInteractionDataOption, len(options))
+ for _, option := range options {
+ optionMap[option.Name] = option
+ }
+
+ option, ok := optionMap["target"]
+ if !ok {
+ utils.SendFollowUpMessage(s, i, "You must mention the user to kick!", true)
+ return
+ }
+
+ user := option.UserValue(s);
+ if user == nil {
+ utils.SendFollowUpMessage(s, i, "Invalid user", true)
+ return
+ }
+ err = s.GuildMemberDeleteWithReason(i.GuildID, user.ID, "Kicked by an admin")
+ if err != nil {
+ utils.SendFollowUpMessage(s, i, "Could not kick user", true)
+ return
+ }
+
+ utils.SendFollowUpMessage(s, i, "User kicked successfully!", true)
+
+} \ No newline at end of file
diff --git a/commands/commands.go b/commands/commands.go
index 629999f..f6027c4 100644
--- a/commands/commands.go
+++ b/commands/commands.go
@@ -6,6 +6,7 @@ import (
var (
manageMessagesPermissions int64 = discordgo.PermissionManageMessages
+ PermissionKickMembers int64 = discordgo.PermissionKickMembers
)
var (
@@ -23,5 +24,18 @@ var (
},
},
},
+ {
+ Name: "kick",
+ Description: "Kick a member from the server",
+ DefaultMemberPermissions: &PermissionKickMembers,
+ Options: []*discordgo.ApplicationCommandOption{
+ {
+ Type: discordgo.ApplicationCommandOptionUser,
+ Name: "target",
+ Description: "The member to kick",
+ Required: true,
+ },
+ },
+ },
}
)
diff --git a/handlers/guildMemberAdd.go b/handlers/guildMemberAdd.go
new file mode 100644
index 0000000..97a4f1c
--- /dev/null
+++ b/handlers/guildMemberAdd.go
@@ -0,0 +1,17 @@
+package handlers
+
+import (
+ "log"
+ "github.com/bwmarrin/discordgo"
+)
+
+func MemberAdd(s *discordgo.Session, m *discordgo.GuildMemberAdd) {
+ if m.GuildID == "1009009522767052860" { // Yuzaki Guild
+ err := s.GuildMemberRoleAdd(m.GuildID, m.User.ID, "1307471288415162428") // Members Role
+ if err != nil {
+ log.Println(err)
+ }
+ }
+
+
+}
diff --git a/handlers/interactionCreateHandler.go b/handlers/interactionCreateHandler.go
index 2d9e0e7..fd0f105 100644
--- a/handlers/interactionCreateHandler.go
+++ b/handlers/interactionCreateHandler.go
@@ -10,6 +10,7 @@ import (
var (
SlashCommandHandlers = map[string]func(s *discordgo.Session, i *discordgo.InteractionCreate){
"purge": admin.PurgeChat,
+ "kick": admin.KickMember,
}
)
diff --git a/handlers/messageHandlers/poketwoHandler.go b/handlers/messageHandlers/poketwoHandler.go
index 3ceb83b..0e108f5 100644
--- a/handlers/messageHandlers/poketwoHandler.go
+++ b/handlers/messageHandlers/poketwoHandler.go
@@ -20,12 +20,13 @@ func PoketwoHandler(s *discordgo.Session, m *discordgo.MessageCreate) {
}
return
}
-
if isPoketwoCommand(m) && !isAllowed {
handleUnauthorizedCommand(s, m)
}
}
+
+
func isPoketwoCommand(m *discordgo.MessageCreate) bool {
return strings.HasPrefix(strings.ToLower(m.Content), "p!") ||
(len(m.Mentions) > 0 && m.Mentions[0].ID == poketwoID)
diff --git a/yuzaki/main.go b/yuzaki/main.go
index 11e1aa3..8de91c2 100644
--- a/yuzaki/main.go
+++ b/yuzaki/main.go
@@ -32,6 +32,7 @@ func init() {
session.AddHandler(ready)
session.AddHandler(handlers.MessageGatewayHandler)
session.AddHandler(handlers.InteractionCreateHandler)
+ session.AddHandler(handlers.MemberAdd)
}
func main() {