Skip to content

Commit 865cae4

Browse files
committed
fix: context menu type
1 parent b438645 commit 865cae4

File tree

2 files changed

+20
-24
lines changed

2 files changed

+20
-24
lines changed

src/define.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ import type {
44
CommandExecute,
55
ContextMenuCallback,
66
ContextMenuConfig,
7+
ContextMenuType,
78
DefineButton,
8-
DefineContextMenu,
9-
DefineContextMenuWithOptions,
109
DefineEvent,
1110
DefineEventWithOptions,
1211
DefinePrecondition,
@@ -68,26 +67,25 @@ export const defineCommand = <T extends OptionsDef = OptionsDef>(
6867
return { config, execute }
6968
}
7069

71-
export const defineContextMenu: DefineContextMenu &
72-
DefineContextMenuWithOptions = <Type extends 'message' | 'user'>(
70+
export const defineContextMenu = <T extends ContextMenuType = 'Message'>(
7371
...args: [
74-
ContextMenuConfig | ContextMenuCallback<Type>,
75-
ContextMenuCallback<Type>?
72+
(ContextMenuConfig & { type?: T }) | ContextMenuCallback<T>,
73+
ContextMenuCallback<T>?
7674
]
7775
): HarmonixContextMenu => {
7876
let config: ContextMenuConfig = {}
7977

8078
if (args.length === 1) {
81-
const [callback] = args as [ContextMenuCallback<Type>]
79+
const [callback] = args as [ContextMenuCallback<T>]
8280

8381
return {
8482
config,
8583
callback
8684
}
8785
} else {
8886
const [cfg, callback] = args as [
89-
ContextMenuConfig,
90-
ContextMenuCallback<Type>
87+
ContextMenuConfig<T>,
88+
ContextMenuCallback<T>
9189
]
9290

9391
config = cfg

src/types/context-menus.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,29 @@ import type {
44
UserContextMenuCommandInteraction
55
} from 'discord.js'
66

7-
export type ContextMenuCallback<Type extends 'message' | 'user'> = (
8-
interaction: Type extends 'message'
7+
export type ContextMenuType = 'Message' | 'User'
8+
9+
export type ContextMenuCallback<T extends ContextMenuType = ContextMenuType> = (
10+
interaction: T extends 'Message'
911
? MessageContextMenuCommandInteraction
1012
: UserContextMenuCommandInteraction
1113
) => void
1214

13-
export interface ContextMenuConfig {
15+
export interface ContextMenuConfig<
16+
T extends ContextMenuType = ContextMenuType
17+
> {
1418
name?: string
15-
type?: 'message' | 'user'
19+
type?: T
1620
userPermissions?: PermissionsString[]
1721
guildOnly?: boolean
1822
preconditions?: string[]
1923
}
2024

21-
export type DefineContextMenu = <Type extends 'message' | 'user'>(
22-
callback: ContextMenuCallback<Type>
23-
) => HarmonixContextMenu
24-
export type DefineContextMenuWithOptions = <Type extends 'message' | 'user'>(
25-
config: ContextMenuConfig,
26-
callback: ContextMenuCallback<Type>
27-
) => HarmonixContextMenu
28-
2925
export type HarmonixContextMenuInput = string | HarmonixContextMenu
3026

31-
export interface HarmonixContextMenu {
32-
config: ContextMenuConfig
33-
callback: ContextMenuCallback<'message' | 'user'>
27+
export interface HarmonixContextMenu<
28+
T extends ContextMenuType = ContextMenuType
29+
> {
30+
config: ContextMenuConfig<T>
31+
callback: ContextMenuCallback<T>
3432
}

0 commit comments

Comments
 (0)