Какой способ, что моя команда может взять 2 строки - PullRequest
0 голосов
/ 10 июля 2019

Я настраиваю диссон-бота для шифрования данных. Я хочу, чтобы пользователь мог печатать что-то вроде:

e.encrypt "data to be encrypted" "their hash of choice"

Я пытался отделить строку от [Remainder], но не могу понять, что делать дальше. Это также не позволит им свободно печатать.

[Command("encrypt")]
public async Task encrypt([Remainder] string Idata)
{
    var des = new Methods.DES();

    des.input = Idata;
    des.hash = "hello";

    des.Encryption();

    await Context.User.SendMessageAsync(des.encryption);

}

Если они напишут что-то вроде

e.encrypt "Hello" "hashkey" 

тогда я хочу, чтобы бот понял, что содержимое между первым "" - это данные, а содержимое между следующим "" - это хеш.

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Если вы ожидаете, что команда будет выполнена как e.encrypt "Hello" "hashkey", просто используйте

[Command("encrypt")]
public async Task encrypt(string data, string hash)
{
    //your code here
}

Атрибут остаток используется только в том случае, если вы хотите, чтобы пользователь вводил строку из нескольких частей без использования кавычек.

0 голосов
/ 10 июля 2019

Для вас очень важно иметь определенную пунктуацию, например: или ~, например?Потому что, если нет, я бы посоветовал вам не беспокоиться о кавычках и иметь что-то вроде «e.encrypt Hello: Hashkey», где определенный символ разделяет их.Таким образом, вы можете легко разделить сообщение на две строки с помощью String[] data = Idata.split(":") (или любого другого выбранного вами символа) и использовать метод для удаления e.encrypt.Вы также можете использовать эту стратегию для реализации ее с кавычками, но она будет немного длиннее

...