feat: Enhance Discord login handler with improved error handling and debug logging
This commit is contained in:
parent
48f0cb1739
commit
eb2f5a7da3
|
@ -30,17 +30,23 @@ export const loginHandler: ToolHandler = async (args, { client }) => {
|
||||||
await client.destroy();
|
await client.destroy();
|
||||||
info('Client destroyed successfully');
|
info('Client destroyed successfully');
|
||||||
|
|
||||||
// Set the new token
|
// Set the new token and ensure it's not null
|
||||||
client.token = token;
|
client.token = token;
|
||||||
|
info(`Token set: ${!!client.token}`);
|
||||||
|
|
||||||
// Login with the new token
|
// Login with the new token
|
||||||
info('Attempting login with new token');
|
info('Attempting login with new token');
|
||||||
|
try {
|
||||||
await client.login(token);
|
await client.login(token);
|
||||||
info(`Login successful, new client user: ${client.user?.tag}`);
|
info(`Login successful, new client user: ${client.user?.tag}`);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
content: [{ type: "text", text: `Successfully switched from ${currentBotTag} to ${client.user?.tag}` }]
|
content: [{ type: "text", text: `Successfully switched from ${currentBotTag} to ${client.user?.tag}` }]
|
||||||
};
|
};
|
||||||
|
} catch (innerError) {
|
||||||
|
error(`Failed to login after destroy: ${innerError instanceof Error ? innerError.message : String(innerError)}`);
|
||||||
|
return handleDiscordError(innerError);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if client is already logged in (and no new token provided)
|
// Check if client is already logged in (and no new token provided)
|
||||||
|
@ -55,6 +61,7 @@ export const loginHandler: ToolHandler = async (args, { client }) => {
|
||||||
if (token) {
|
if (token) {
|
||||||
info('Setting token from request');
|
info('Setting token from request');
|
||||||
client.token = token;
|
client.token = token;
|
||||||
|
info(`Token set to request value: ${!!client.token}`);
|
||||||
} else {
|
} else {
|
||||||
info('No token in request, checking for existing token');
|
info('No token in request, checking for existing token');
|
||||||
}
|
}
|
||||||
|
@ -70,18 +77,28 @@ export const loginHandler: ToolHandler = async (args, { client }) => {
|
||||||
|
|
||||||
info('Attempting login with token');
|
info('Attempting login with token');
|
||||||
try {
|
try {
|
||||||
await client.login(client.token);
|
// Try login with explicit token parameter
|
||||||
|
info(`Login with explicit token parameter starting`);
|
||||||
|
await client.login(token || client.token);
|
||||||
info(`Login successful, client user: ${client.user?.tag}`);
|
info(`Login successful, client user: ${client.user?.tag}`);
|
||||||
|
|
||||||
// Verify client is actually ready
|
// Verify client is actually ready
|
||||||
if (!client.isReady()) {
|
if (!client.isReady()) {
|
||||||
error('Client login completed but client.isReady() returned false');
|
error('Client login completed but client.isReady() returned false');
|
||||||
|
// Try to force a second login directly with the token
|
||||||
|
info('Attempting second login with direct token');
|
||||||
|
await client.login(client.token);
|
||||||
|
|
||||||
|
if (!client.isReady()) {
|
||||||
|
error('Second login attempt failed, client still not ready');
|
||||||
return {
|
return {
|
||||||
content: [{ type: "text", text: "Login completed but client is not in ready state. This may indicate an issue with Discord connectivity." }],
|
content: [{ type: "text", text: "Login completed but client is not in ready state. This may indicate an issue with Discord connectivity." }],
|
||||||
isError: true
|
isError: true
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
info(`Login fully completed, ready state: ${client.isReady()}`);
|
||||||
return {
|
return {
|
||||||
content: [{ type: "text", text: `Successfully logged in to Discord: ${client.user?.tag}` }]
|
content: [{ type: "text", text: `Successfully logged in to Discord: ${client.user?.tag}` }]
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue