mirror of
https://github.com/sern-handler/handler
synced 2026-06-06 01:16:55 +00:00
fix+regress
This commit is contained in:
@@ -38,19 +38,15 @@ export async function callInitPlugins(_module: Module, deps: Dependencies, emit?
|
||||
}
|
||||
|
||||
export function executeModule(emitter: Emitter, { module, args } : ExecutePayload) {
|
||||
//do not await. this will block sern
|
||||
|
||||
const moduleCalled = wrapAsync(async () => {
|
||||
console.log(module)
|
||||
return module.execute(...args);
|
||||
})
|
||||
moduleCalled
|
||||
.then(() => {
|
||||
console.log('success execute')
|
||||
emitter.emit('module.activate', resultPayload('success', module))
|
||||
})
|
||||
.catch(err => {
|
||||
console.log('err', err)
|
||||
if(!emitter.emit('error', resultPayload('failure', module, err))) {
|
||||
console.error(err)
|
||||
}
|
||||
|
||||
@@ -30,16 +30,13 @@ export function interactionHandler(deps: UnpackedDependencies, defaultPrefix?: s
|
||||
let payload;
|
||||
if(isAutocomplete(event)) {
|
||||
//@ts-ignore stfu
|
||||
const option = treeSearch(event, module.options);
|
||||
//@ts-ignore stfu
|
||||
const { command } = option;
|
||||
const { command } = treeSearch(event, module.options);
|
||||
payload= { module: command as Module, //autocomplete is not a true "module" warning cast!
|
||||
args: [event, createSDT(command, deps, params)] };
|
||||
} else if(isCommand(event)) {
|
||||
payload={ module,
|
||||
args: [Context.wrap(event, defaultPrefix), createSDT(module, deps, params)] };
|
||||
payload= { module, args: [Context.wrap(event, defaultPrefix), createSDT(module, deps, params)] };
|
||||
} else if (isModal(event) || isMessageComponent(event)) {
|
||||
payload={ module, args: [event, createSDT(module, deps, params)] }
|
||||
payload= { module, args: [event, createSDT(module, deps, params)] }
|
||||
} else {
|
||||
throw Error("Unknown interaction while handling in interactionCreate event " + event)
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ export function messageHandler (deps: UnpackedDependencies, defaultPrefix?: stri
|
||||
emitter.emit('module.activate', resultPayload('failure', module, result.error ?? SernError.PluginFailure))
|
||||
return
|
||||
}
|
||||
|
||||
//@ts-ignore
|
||||
payload.args[1].state = result.value
|
||||
|
||||
|
||||
@@ -80,9 +80,9 @@ const parseConfig = async (conf: Promise<Presence.Result>, setPresence: SetPrese
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// No repeat configuration, just return the result
|
||||
return result;
|
||||
return setPresence(result);
|
||||
};
|
||||
|
||||
export const presenceHandler = async (path: string, setPresence: SetPresence) => {
|
||||
|
||||
@@ -3,7 +3,7 @@ import { once } from 'node:events';
|
||||
import { resultPayload } from '../core/functions';
|
||||
import { CommandType } from '../core/structures/enums';
|
||||
import { Module } from '../types/core-modules';
|
||||
import { UnpackedDependencies } from '../types/utility';
|
||||
import type { UnpackedDependencies } from '../types/utility';
|
||||
import { callInitPlugins } from './event-utils';
|
||||
|
||||
export default async function(dir: string, deps : UnpackedDependencies) {
|
||||
|
||||
@@ -6,7 +6,7 @@ import type { UnpackedDependencies } from '../types/utility';
|
||||
import type { Emitter } from '../core/interfaces';
|
||||
import { inspect } from 'util'
|
||||
import { resultPayload } from '../core/functions';
|
||||
import { Wrapper } from '../'
|
||||
import type { Wrapper } from '../'
|
||||
|
||||
export default async function(deps: UnpackedDependencies, wrapper: Wrapper) {
|
||||
const eventModules: EventModule[] = [];
|
||||
@@ -52,7 +52,6 @@ export default async function(deps: UnpackedDependencies, wrapper: Wrapper) {
|
||||
logger?.error({ message: inspect(err) });
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
source.addListener(String(module.name!), execute)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { Presence } from '../../src';
|
||||
|
||||
import * as Files from '../../src/core/module-loading'
|
||||
import { presenceHandler } from '../../src/handlers/presence'
|
||||
|
||||
// Example test suite for the module function
|
||||
describe('module function', () => {
|
||||
@@ -54,4 +55,38 @@ describe('of function', () => {
|
||||
activities: [{ name: 'Another Test Activity' }],
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
})
|
||||
|
||||
|
||||
describe('Presence module execution', () => {
|
||||
const mockExecuteResult = Presence.of({
|
||||
status: 'online',
|
||||
}).once();
|
||||
|
||||
const mockModule = Presence.module({
|
||||
inject: [ '@sern/client'],
|
||||
execute: vi.fn().mockReturnValue(mockExecuteResult)
|
||||
})
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
// Mock Files.importModule
|
||||
vi.spyOn(Files, 'importModule').mockResolvedValue({
|
||||
module: mockModule
|
||||
});
|
||||
|
||||
|
||||
|
||||
});
|
||||
it('should set presence once.', async () => {
|
||||
const setPresenceMock = vi.fn();
|
||||
const mockPath = '/path/to/presence/config';
|
||||
|
||||
await presenceHandler(mockPath, setPresenceMock);
|
||||
|
||||
expect(Files.importModule).toHaveBeenCalledWith(mockPath);
|
||||
expect(setPresenceMock).toHaveBeenCalledOnce();
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { vi } from 'vitest'
|
||||
import { makeDependencies } from '../../src';
|
||||
import { Client } from 'discord.js';
|
||||
|
||||
vi.mock('discord.js', async (importOriginal) => {
|
||||
const mod = await importOriginal()
|
||||
@@ -44,3 +46,9 @@ vi.mock('discord.js', async (importOriginal) => {
|
||||
ChatInputCommandInteraction: vi.fn()
|
||||
};
|
||||
});
|
||||
|
||||
await makeDependencies(({ add }) => {
|
||||
add('@sern/client', { })
|
||||
})
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user