小编Jar*_*ile的帖子

Discord.NET向SocketMessage添加响应

我正在使用Discord.NET版本1.0.2清理问题

我的Discord Bot应用程序中有一个MessageReceived任务:

private async Task MessageReceived(SocketMessage message)
Run Code Online (Sandbox Code Playgroud)

可以推断,此任务每次在Discord中接收到此机器人的消息时运行。但是,我试图弄清楚如何对机器人已收到的消息进行响应。在此之下SocketMessage,没有任何方法可以对收到的消息添加反应。我在网上看了看,发现其中RestUserMessage包含该方法AddReactionAsync(IEmote, RequestOptions)。然后我铸造Socket MessageRestUserMessage作为如此

var rMessage = (RestUserMessage) await message.Channel.GetMessageAsync(message.Id);
Run Code Online (Sandbox Code Playgroud)

AddReactionAsync在我的变量下运行该方法rMessage可以RestUserMessage工作,但是从网上阅读和文档中可以看出,参数没有正确使用。

IEmote似乎是一个字符串,但是字符串不满足此参数,表示没有从String到的转换IEmote。我尝试将其强制转换String为,IEmote但这没有用。

RequestOptions变量似乎完全满足参数要求new RequestOptions()

我的完整代码是:

private async Task MessageReceived(SocketMessage message)
{
    var rMessage = (RestUserMessage) await message.Channel.GetMessageAsync(message.Id);
    rMessage.AddReactionAsync(???, new RequestOptions());
}
Run Code Online (Sandbox Code Playgroud)

如何IEmote正确实现此参数,或如何定义IEmote变量。同样,定义new RequestOptions()变量也是实现此参数的正确方法。这是否也是通过Discord.NET向消息添加响应的正确方法,如果不是,这是正确的方法吗?

我所做的研究:

https://github.com/RogueException/Discord.Net/issues/490
https://discord.foxbot.me/docs/api/Discord.Rest.RestUserMessage.html
https://discord.foxbot.me/docs/api/Discord.IEmote.html
https://discord.foxbot.me/docs/api/Discord.RequestOptions.html
Run Code Online (Sandbox Code Playgroud)

c# discord discord.net

2
推荐指数
1
解决办法
6349
查看次数

C++为什么这样做

我正在使用Microsoft Visual Studio 2013

我目前有这个switch语句:

switch (option)
{
        case 1:
            getline(cin, newname);
            cout << "What would you like your new username to be?\nName: ";
            getline(cin, newname);
            name = newname;
            cout << "\nYour username is now '" << name << "' with your balance being $" << balance << "\n";
            options();
            break;
        case 2:
            cout << "\nOpenning cheat menu\n";
            cheats();
            break;
        default:
            cout << "\nExitting to main title...\n";
            title();
            break;
}
Run Code Online (Sandbox Code Playgroud)

你可以忽略案例2和默认情况,只是显示所以你知道这些案例是有效的.案例2和默认工作完全正常,但案例1表现得很奇怪.正如你在案例1中看到的,我有两个getline(cin,newname); 您可能认为我应该只有一个,但由于某种原因,我需要两个才能使此代码正常运行.

如果我只有其中一个代码跳过用户应该给出的输入.如果我有两个它正常工作.

我问过这个人他们也不明白,因此:为什么这样做.

c++ switch-statement visual-studio visual-c++

1
推荐指数
1
解决办法
79
查看次数

C# Discord.NET 命令如何将字符串数组作为参数

我正在使用 Discord.NET 1.0.2,这个问题特定于 Discord.NET。

我正在使用我Discord.Commands如何工作我的命令,我将它们初始化为这样

var msg = message as SocketUserMessage;
var context = new SocketCommandContext(_client, msg);
int argPos = 0;
if(msg.HasCharPrefix('>', ref argPos))
{
    var result = await _service.ExecuteAsync(context, argPos);
}
Run Code Online (Sandbox Code Playgroud)

然后在我单独的班级中,我有一个特定的命令

public class Command : ModuleBase<SocketCommandContext>
{
    [Command("test")]
    public async Task balanceCommmand(String[] stringArray)
    {
        // code
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,在运行程序时,我收到System.InvalidOperationException“附加信息:未找到类型 String[] 的类型读取器,必须指定一个”

我之前在异步任务下使用过参数,但它似乎不想将字符串数组作为参数。

我如何能够使用 Discord.Commands 1.0.2 版将字符串数组作为参数传递给命令。

如果没有办法做到这一点,有没有办法通过使用替代方法来模仿这一点?

我在谷歌上环顾四周,没有找到与我有类似问题甚至类似问题的人。

c# arrays discord discord.net

1
推荐指数
1
解决办法
3247
查看次数