11import { DiscordIcon } from '@/components/icons'
2+ import type { BlockConfig } from '@/blocks/types'
23import type { DiscordResponse } from '@/tools/discord/types'
3- import type { BlockConfig } from '../types'
44
55export const DiscordBlock : BlockConfig < DiscordResponse > = {
66 type : 'discord' ,
@@ -32,6 +32,7 @@ export const DiscordBlock: BlockConfig<DiscordResponse> = {
3232 placeholder : 'Enter Discord bot token' ,
3333 password : true ,
3434 } ,
35+ // Server selector (basic mode)
3536 {
3637 id : 'serverId' ,
3738 title : 'Server' ,
@@ -40,11 +41,26 @@ export const DiscordBlock: BlockConfig<DiscordResponse> = {
4041 provider : 'discord' ,
4142 serviceId : 'discord' ,
4243 placeholder : 'Select Discord server' ,
44+ mode : 'basic' ,
4345 condition : {
4446 field : 'operation' ,
4547 value : [ 'discord_send_message' , 'discord_get_messages' , 'discord_get_server' ] ,
4648 } ,
4749 } ,
50+ // Manual server ID input (advanced mode)
51+ {
52+ id : 'manualServerId' ,
53+ title : 'Server ID' ,
54+ type : 'short-input' ,
55+ layout : 'full' ,
56+ placeholder : 'Enter Discord server ID' ,
57+ mode : 'advanced' ,
58+ condition : {
59+ field : 'operation' ,
60+ value : [ 'discord_send_message' , 'discord_get_messages' , 'discord_get_server' ] ,
61+ } ,
62+ } ,
63+ // Channel selector (basic mode)
4864 {
4965 id : 'channelId' ,
5066 title : 'Channel' ,
@@ -53,6 +69,17 @@ export const DiscordBlock: BlockConfig<DiscordResponse> = {
5369 provider : 'discord' ,
5470 serviceId : 'discord' ,
5571 placeholder : 'Select Discord channel' ,
72+ mode : 'basic' ,
73+ condition : { field : 'operation' , value : [ 'discord_send_message' , 'discord_get_messages' ] } ,
74+ } ,
75+ // Manual channel ID input (advanced mode)
76+ {
77+ id : 'manualChannelId' ,
78+ title : 'Channel ID' ,
79+ type : 'short-input' ,
80+ layout : 'full' ,
81+ placeholder : 'Enter Discord channel ID' ,
82+ mode : 'advanced' ,
5683 condition : { field : 'operation' , value : [ 'discord_send_message' , 'discord_get_messages' ] } ,
5784 } ,
5885 {
@@ -108,25 +135,56 @@ export const DiscordBlock: BlockConfig<DiscordResponse> = {
108135 if ( ! params . botToken ) throw new Error ( 'Bot token required for this operation' )
109136 commonParams . botToken = params . botToken
110137
138+ // Handle server ID (selector or manual)
139+ const effectiveServerId = ( params . serverId || params . manualServerId || '' ) . trim ( )
140+
141+ // Handle channel ID (selector or manual)
142+ const effectiveChannelId = ( params . channelId || params . manualChannelId || '' ) . trim ( )
143+
111144 switch ( params . operation ) {
112145 case 'discord_send_message' :
146+ if ( ! effectiveServerId ) {
147+ throw new Error (
148+ 'Server ID is required. Please select a server or enter a server ID manually.'
149+ )
150+ }
151+ if ( ! effectiveChannelId ) {
152+ throw new Error (
153+ 'Channel ID is required. Please select a channel or enter a channel ID manually.'
154+ )
155+ }
113156 return {
114157 ...commonParams ,
115- serverId : params . serverId ,
116- channelId : params . channelId ,
158+ serverId : effectiveServerId ,
159+ channelId : effectiveChannelId ,
117160 content : params . content ,
118161 }
119162 case 'discord_get_messages' :
163+ if ( ! effectiveServerId ) {
164+ throw new Error (
165+ 'Server ID is required. Please select a server or enter a server ID manually.'
166+ )
167+ }
168+ if ( ! effectiveChannelId ) {
169+ throw new Error (
170+ 'Channel ID is required. Please select a channel or enter a channel ID manually.'
171+ )
172+ }
120173 return {
121174 ...commonParams ,
122- serverId : params . serverId ,
123- channelId : params . channelId ,
175+ serverId : effectiveServerId ,
176+ channelId : effectiveChannelId ,
124177 limit : params . limit ? Math . min ( Math . max ( 1 , Number ( params . limit ) ) , 100 ) : 10 ,
125178 }
126179 case 'discord_get_server' :
180+ if ( ! effectiveServerId ) {
181+ throw new Error (
182+ 'Server ID is required. Please select a server or enter a server ID manually.'
183+ )
184+ }
127185 return {
128186 ...commonParams ,
129- serverId : params . serverId ,
187+ serverId : effectiveServerId ,
130188 }
131189 case 'discord_get_user' :
132190 return {
@@ -143,7 +201,9 @@ export const DiscordBlock: BlockConfig<DiscordResponse> = {
143201 operation : { type : 'string' , required : true } ,
144202 botToken : { type : 'string' , required : true } ,
145203 serverId : { type : 'string' , required : false } ,
204+ manualServerId : { type : 'string' , required : false } ,
146205 channelId : { type : 'string' , required : false } ,
206+ manualChannelId : { type : 'string' , required : false } ,
147207 content : { type : 'string' , required : false } ,
148208 limit : { type : 'number' , required : false } ,
149209 userId : { type : 'string' , required : false } ,
0 commit comments