当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript Bridge.run方法代码示例

本文整理汇总了TypeScript中matrix-appservice-bridge.Bridge.run方法的典型用法代码示例。如果您正苦于以下问题:TypeScript Bridge.run方法的具体用法?TypeScript Bridge.run怎么用?TypeScript Bridge.run使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在matrix-appservice-bridge.Bridge的用法示例。


在下文中一共展示了Bridge.run方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: run

async function run(port: number, fileConfig: DiscordBridgeConfig) {
    const config = new DiscordBridgeConfig();
    config.ApplyConfig(fileConfig);
    Log.Configure(config.logging);
    log.info("Starting Discord AS");
    const yamlConfig = yaml.safeLoad(fs.readFileSync(cli.opts.registrationPath, "utf8"));
    const registration = AppServiceRegistration.fromObject(yamlConfig);
    if (registration === null) {
        throw new Error("Failed to parse registration file");
    }

    const botUserId = `@${registration.sender_localpart}:${config.bridge.domain}`;
    const clientFactory = new ClientFactory({
        appServiceUserId: botUserId,
        token: registration.as_token,
        url: config.bridge.homeserverUrl,
    });
    const provisioner = new Provisioner();
    // Warn and deprecate old config options.
    const discordstore = new DiscordStore(config.database);
    const discordbot = new DiscordBot(config, discordstore, provisioner);
    const roomhandler = new MatrixRoomHandler(discordbot, config, botUserId, provisioner);

    const bridge = new Bridge({
        clientFactory,
        controller: {
            // onUserQuery: userQuery,
            onAliasQueried: async (alias: string, roomId: string) => {
                try {
                    return await roomhandler.OnAliasQueried.bind(roomhandler)(alias, roomId);
                } catch (err) { log.error("Exception thrown while handling \"onAliasQueried\" event", err); }
            },
            onAliasQuery: async (alias: string, aliasLocalpart: string) => {
                try {
                    return await roomhandler.OnAliasQuery.bind(roomhandler)(alias, aliasLocalpart);
                } catch (err) { log.error("Exception thrown while handling \"onAliasQuery\" event", err); }
            },
            onEvent: async (request, context) => {
                try {
                    await request.outcomeFrom(Bluebird.resolve(roomhandler.OnEvent(request, context)));
                } catch (err) {
                    log.error("Exception thrown while handling \"onEvent\" event", err);
                }
            },
            onLog: (line, isError) => {
                log.verbose("matrix-appservice-bridge", line);
            },
            thirdPartyLookup: roomhandler.ThirdPartyLookup,
        },
        domain: config.bridge.domain,
        homeserverUrl: config.bridge.homeserverUrl,
        intentOptions: {
            clients: {
                dontJoin: true, // handled manually
            },
        },
        queue: {
            perRequest: true,
            type: "per_room",
        },
        registration,
        roomStore: config.database.roomStorePath,
        userStore: config.database.userStorePath,
        // To avoid out of order message sending.
    });
    provisioner.SetBridge(bridge);
    roomhandler.setBridge(bridge);
    discordbot.setBridge(bridge);
    discordbot.setRoomHandler(roomhandler);
    log.info("Initing bridge.");
    log.info(`Started listening on port ${port}.`);

    try {
        await bridge.run(port, config);
        log.info("Initing store.");
        await discordstore.init();
        log.info("Initing bot.");
        await discordbot.run();
        log.info("Discordbot started successfully.");
    } catch (err) {
        log.error(err);
        log.error("Failure during startup. Exiting.");
        process.exit(1);
    }
}
开发者ID:Half-Shot,项目名称:matrix-appservice-discord,代码行数:85,代码来源:discordas.ts


注:本文中的matrix-appservice-bridge.Bridge.run方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。