You've already forked matrix-react-sdk
							
							
				mirror of
				https://github.com/matrix-org/matrix-react-sdk.git
				synced 2025-11-04 11:51:45 +03:00 
			
		
		
		
	Support replying with a message command
Signed-off-by: Robin Townsend <robin@robin.town>
This commit is contained in:
		@@ -20,6 +20,7 @@ limitations under the License.
 | 
			
		||||
 | 
			
		||||
import * as React from 'react';
 | 
			
		||||
 | 
			
		||||
import { ContentHelpers } from 'matrix-js-sdk';
 | 
			
		||||
import {MatrixClientPeg} from './MatrixClientPeg';
 | 
			
		||||
import dis from './dispatcher/dispatcher';
 | 
			
		||||
import * as sdk from './index';
 | 
			
		||||
@@ -126,10 +127,10 @@ export class Command {
 | 
			
		||||
        return this.getCommand() + " " + this.args;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    run(roomId: string, args: string, cmd: string) {
 | 
			
		||||
    run(roomId: string, args: string) {
 | 
			
		||||
        // if it has no runFn then its an ignored/nop command (autocomplete only) e.g `/me`
 | 
			
		||||
        if (!this.runFn) return reject(_t("Command error"));
 | 
			
		||||
        return this.runFn.bind(this)(roomId, args, cmd);
 | 
			
		||||
        return this.runFn.bind(this)(roomId, args);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    getUsage() {
 | 
			
		||||
@@ -163,7 +164,7 @@ export const Commands = [
 | 
			
		||||
            if (args) {
 | 
			
		||||
                message = message + ' ' + args;
 | 
			
		||||
            }
 | 
			
		||||
            return success(MatrixClientPeg.get().sendTextMessage(roomId, message));
 | 
			
		||||
            return success(ContentHelpers.makeTextMessage(message));
 | 
			
		||||
        },
 | 
			
		||||
        category: CommandCategories.messages,
 | 
			
		||||
    }),
 | 
			
		||||
@@ -176,7 +177,7 @@ export const Commands = [
 | 
			
		||||
            if (args) {
 | 
			
		||||
                message = message + ' ' + args;
 | 
			
		||||
            }
 | 
			
		||||
            return success(MatrixClientPeg.get().sendTextMessage(roomId, message));
 | 
			
		||||
            return success(ContentHelpers.makeTextMessage(message));
 | 
			
		||||
        },
 | 
			
		||||
        category: CommandCategories.messages,
 | 
			
		||||
    }),
 | 
			
		||||
@@ -189,7 +190,7 @@ export const Commands = [
 | 
			
		||||
            if (args) {
 | 
			
		||||
                message = message + ' ' + args;
 | 
			
		||||
            }
 | 
			
		||||
            return success(MatrixClientPeg.get().sendTextMessage(roomId, message));
 | 
			
		||||
            return success(ContentHelpers.makeTextMessage(message));
 | 
			
		||||
        },
 | 
			
		||||
        category: CommandCategories.messages,
 | 
			
		||||
    }),
 | 
			
		||||
@@ -202,7 +203,7 @@ export const Commands = [
 | 
			
		||||
            if (args) {
 | 
			
		||||
                message = message + ' ' + args;
 | 
			
		||||
            }
 | 
			
		||||
            return success(MatrixClientPeg.get().sendTextMessage(roomId, message));
 | 
			
		||||
            return success(ContentHelpers.makeTextMessage(message));
 | 
			
		||||
        },
 | 
			
		||||
        category: CommandCategories.messages,
 | 
			
		||||
    }),
 | 
			
		||||
@@ -211,7 +212,7 @@ export const Commands = [
 | 
			
		||||
        args: '<message>',
 | 
			
		||||
        description: _td('Sends a message as plain text, without interpreting it as markdown'),
 | 
			
		||||
        runFn: function(roomId, messages) {
 | 
			
		||||
            return success(MatrixClientPeg.get().sendTextMessage(roomId, messages));
 | 
			
		||||
            return success(ContentHelpers.makeTextMessage(messages));
 | 
			
		||||
        },
 | 
			
		||||
        category: CommandCategories.messages,
 | 
			
		||||
    }),
 | 
			
		||||
@@ -220,7 +221,7 @@ export const Commands = [
 | 
			
		||||
        args: '<message>',
 | 
			
		||||
        description: _td('Sends a message as html, without interpreting it as markdown'),
 | 
			
		||||
        runFn: function(roomId, messages) {
 | 
			
		||||
            return success(MatrixClientPeg.get().sendHtmlMessage(roomId, messages, messages));
 | 
			
		||||
            return success(ContentHelpers.makeHtmlMessage(messages, messages));
 | 
			
		||||
        },
 | 
			
		||||
        category: CommandCategories.messages,
 | 
			
		||||
    }),
 | 
			
		||||
@@ -966,7 +967,7 @@ export const Commands = [
 | 
			
		||||
        args: '<message>',
 | 
			
		||||
        runFn: function(roomId, args) {
 | 
			
		||||
            if (!args) return reject(this.getUserId());
 | 
			
		||||
            return success(MatrixClientPeg.get().sendHtmlMessage(roomId, args, textToHtmlRainbow(args)));
 | 
			
		||||
            return success(ContentHelpers.makeHtmlMessage(args, textToHtmlRainbow(args)));
 | 
			
		||||
        },
 | 
			
		||||
        category: CommandCategories.messages,
 | 
			
		||||
    }),
 | 
			
		||||
@@ -976,7 +977,7 @@ export const Commands = [
 | 
			
		||||
        args: '<message>',
 | 
			
		||||
        runFn: function(roomId, args) {
 | 
			
		||||
            if (!args) return reject(this.getUserId());
 | 
			
		||||
            return success(MatrixClientPeg.get().sendHtmlEmote(roomId, args, textToHtmlRainbow(args)));
 | 
			
		||||
            return success(ContentHelpers.makeHtmlEmote(args, textToHtmlRainbow(args)));
 | 
			
		||||
        },
 | 
			
		||||
        category: CommandCategories.messages,
 | 
			
		||||
    }),
 | 
			
		||||
@@ -1201,10 +1202,13 @@ export function parseCommandString(input: string) {
 | 
			
		||||
 * processing the command, or 'promise' if a request was sent out.
 | 
			
		||||
 * Returns null if the input didn't match a command.
 | 
			
		||||
 */
 | 
			
		||||
export function getCommand(roomId: string, input: string) {
 | 
			
		||||
export function getCommand(input: string) {
 | 
			
		||||
    const {cmd, args} = parseCommandString(input);
 | 
			
		||||
 | 
			
		||||
    if (CommandMap.has(cmd) && CommandMap.get(cmd).isEnabled()) {
 | 
			
		||||
        return () => CommandMap.get(cmd).run(roomId, args, cmd);
 | 
			
		||||
        return {
 | 
			
		||||
            cmd: CommandMap.get(cmd),
 | 
			
		||||
            args,
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user