Система продвижения бота Roblox - PullRequest
0 голосов
/ 23 марта 2020

Я хочу использовать команду продвижения для продвижения людей в группе, и она не продвигает их, она отвечает сообщением, в котором говорится, что мне нужно ввести имя пользователя.

Мой код:

import * as Discord from "discord.js";
import { IBotCommand } from "../api";
import * as ConfigFile from "../config";
let express = require("express");
let roblox = require('noblox.js');

export default class Promote implements IBotCommand {

    private readonly _command = "promote";

    help(): string {
        return "Promote members in the Roblox group."
    }

    isThisCommand(command: string): boolean {
        return command === this._command;
    }


    async runCommand(args: string[], msgObject: Discord.Message, client: Discord.Client): Promise<void> {
        if (!msgObject.member.roles.find("name", "Council")) {
            msgObject.channel.send(`Nice try ${msgObject.author.username} but you don't have permission to promote members!`)
                .catch(console.error);
            return;

        }

        let groupId = 5293276;
        let maximumRank = ConfigFile.config.maximum_rank
        let username = args[1]
        if (username) {
            msgObject.channel.send(`Checking ROBLOX for ${username}`)
            roblox.getIdFromUsername(username)
                .then(function (id: any) {
                    roblox.getRankInGroup(groupId, id)
                        .then(function (rank: number) {
                            if (maximumRank <= rank) {
                                msgObject.channel.send(`${id} is rank ${rank} and not promotable.`)
                            } else {
                                msgObject.channel.send(`${id} is rank ${rank} and promotable.`)
                                roblox.promote(groupId, id)
                                    .then(function (roles: { oldRole: { Name: any; }; newRole: { Name: any; }; }) {
                                        msgObject.channel.send(`Promoted from ${roles.oldRole.Name} to ${roles.newRole.Name}`)
                                    }).catch(console.error)
                                        .then(msgObject.channel.send("Failed to promote."))

                            }
                        }).catch(console.error)
                            .then(
                                msgObject.channel.send("Couldn't get him in the group."));

                }).catch(console.error)
                .then(
                    msgObject.channel.send(`Sorry, but ${username} doesn't exist on ROBLOX.`));

        } else {
            msgObject.channel.send("Please enter a username.")
        }
        return;


    }
}

Когда я вставляю имя пользователя, оно воспроизводит следующее сообщение:

enter image description here

и выдает одно и то же сообщение каждому имени пользователя.

1 Ответ

0 голосов
/ 24 марта 2020

Я не уверен, но если вы используете commandHelper с cmd\args, имя пользователя должно быть let username = args[0], а не let username = args[1] Поскольку команда execute world сращена из массивов сообщений, и вы получили неопределенное значение args[1]

Вы можете проверить это, если выполните команду следующим образом: m!promote fakedname nowItsRealNameForArgs[1]

...