RocketChat / Rocket.Chat.Apps-engine

The Rocket.Chat Apps engine and definitions.
https://rocketchat.github.io/Rocket.Chat.Apps-engine/
MIT License
116 stars 118 forks source link

Notifier typing causes error #802

Open nbak opened 2 months ago

nbak commented 2 months ago

App implements IPostMessageSent. Permissions listed in app.json: networking, message.write, persistence, slashcommand

executePostMessageSent ```typescript async executePostMessageSent(message: IMessage, read: IRead, http: IHttp, persistence: IPersistence, modify: IModify): Promise { console.log(1); let stopTyping: (() => Promise) | null = null; try { const appUser = (await read.getUserReader().getAppUser())!; console.log(2); stopTyping = await modify.getNotifier().typing({ id: message.room.id, scope: TypingScope.Room, username: appUser.name, }); console.log(3); await sleep(2000); // Custom sleep funciton console.log(4); } catch (e) { console.log(5); } finally { console.log(6); await stopTyping?.(); console.log(7); } } ```

Application log after message sent in chat

Subprocess stderr 1
Subprocess stderr 2
Subprocess stderr error: Uncaught (in promise) TypeError: Cannot create property 'logs' on string 'Result must exist for success Response objects'
        data.logs = logger.getLogs();
                 ^
    at Module.errorResponse (file:///app/bundle/programs/server/npm/node_modules/@rocket.chat/apps-engine/deno-runtime/lib/messenger.ts:141:18)
    at main (file:///app/bundle/programs/server/npm/node_modules/@rocket.chat/apps-engine/deno-runtime/main.ts:121:33)
    at eventLoopTick (ext:core/01_core.js:183:11)

Using this.getLogger().log instead of console.log leaves no logs saved/printed. Calling modify.getNotifier().notifyUser in slash command works without errors.

Message Result must exist for success Response objects seems to be from jsonrpc-lite, called from this line.

Apps Engine version: 1.45.0

Issue present in Rocket.Chat versions 6.10.x, 6.11.x, 6.12.0, 6.12.1. In Rocket.Chat version 6.9.5 app works without errors.

cuonghuunguyen commented 2 months ago

Got the same issue on Rocket.Chat 6.12.1

Subprocess stderr error: Uncaught (in promise) TypeError: Cannot create property 'logs' on string 'Result must exist for success Response objects'
        data.logs = logger.getLogs();
                 ^
    at Module.errorResponse (file:///app/bundle/programs/server/npm/node_modules/@rocket.chat/apps-engine/deno-runtime/lib/messenger.ts:141:18)
    at main (file:///app/bundle/programs/server/npm/node_modules/@rocket.chat/apps-engine/deno-runtime/main.ts:121:33)
    at eventLoopTick (ext:core/01_core.js:183:11)