Skip to content

Commit 2cae3e1

Browse files
authored
Merge pull request #20 from Lumos-Programming/shion/thm-channel-limit
🐛 THMコマンドでのチャンネル制約追加
2 parents 2e23d52 + 8cfa7fd commit 2cae3e1

File tree

2 files changed

+23
-11
lines changed

2 files changed

+23
-11
lines changed

cmd/tryhackme-achievement/main.go

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ const (
1818

1919
// TryHackMeCmd encapsulates all logic for the `/share` command.
2020
type TryHackMeCmd struct {
21-
GuildID string
21+
GuildID, channelID string
2222
}
2323

2424
// NewTryHackMeCmd returns a new command handler.
25-
func NewTryHackMeCmd(guildID string) *TryHackMeCmd {
26-
return &TryHackMeCmd{GuildID: guildID}
25+
func NewTryHackMeCmd(guildID, chanID string) *TryHackMeCmd {
26+
return &TryHackMeCmd{GuildID: guildID, channelID: chanID}
2727
}
2828

2929
// RegisterCommand registers/updates the slash-command every time the bot becomes READY.
@@ -43,12 +43,22 @@ func (c *TryHackMeCmd) RegisterCommand(s *discordgo.Session) error {
4343
// It processes both the slash-command invocation and the modal submit event.
4444
func (c *TryHackMeCmd) Handle(s *discordgo.Session, i *discordgo.InteractionCreate) {
4545
switch i.Type {
46-
4746
case discordgo.InteractionApplicationCommand:
4847
if i.ApplicationCommandData().Name != cmdName {
4948
return
5049
}
51-
50+
if i.ChannelID != c.channelID {
51+
if err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
52+
Type: discordgo.InteractionResponseChannelMessageWithSource,
53+
Data: &discordgo.InteractionResponseData{
54+
Content: "このコマンドはこのチャンネルでは使用できません。",
55+
Flags: discordgo.MessageFlagsEphemeral,
56+
},
57+
}); err != nil {
58+
log.Printf("tryhackme: respond error: %v", err)
59+
}
60+
return
61+
}
5262
// Send modal
5363
modal := &discordgo.InteractionResponse{
5464
Type: discordgo.InteractionResponseModal,

main.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@ import (
1515
)
1616

1717
const (
18-
EnvDiscordToken = "DISCORD_TOKEN"
19-
EnvTargetServer = "TARGET_SERVER"
20-
EnvWelcomeChannel = "WELCOME_CHANNEL"
21-
EnvMemberRoleID = "MEMBER_ROLE_ID"
22-
EnvTestUserID = "TEST_USER_ID"
18+
EnvDiscordToken = "DISCORD_TOKEN"
19+
EnvTargetServer = "TARGET_SERVER"
20+
EnvWelcomeChannel = "WELCOME_CHANNEL"
21+
EnvMemberRoleID = "MEMBER_ROLE_ID"
22+
EnvTestUserID = "TEST_USER_ID"
23+
EnvTHMAchievementChan = "TRYHACKME_ACHIEVEMENT_CHANNEL_ID"
2324
)
2425

2526
func main() {
@@ -31,6 +32,7 @@ func main() {
3132
targetServer := os.Getenv(EnvTargetServer)
3233
memberRoleID := os.Getenv(EnvMemberRoleID)
3334
testUserID := os.Getenv(EnvTestUserID)
35+
thmAchievementChannelID := os.Getenv(EnvTHMAchievementChan)
3436

3537
bot, err := discordgo.New(fmt.Sprintf("Bot %s", discordToken))
3638
if err != nil {
@@ -54,7 +56,7 @@ func main() {
5456
cmds.Add(noxCmd)
5557
deleteCmd := del.NewDeleteCmd()
5658
cmds.Add(deleteCmd)
57-
tryhackmeAchievementCmd := tryhackme_achievement.NewTryHackMeCmd(targetServer)
59+
tryhackmeAchievementCmd := tryhackme_achievement.NewTryHackMeCmd(targetServer, thmAchievementChannelID)
5860
cmds.Add(tryhackmeAchievementCmd)
5961

6062
cmdHandler := cmds.Activate(bot)

0 commit comments

Comments
 (0)