我正在尝试制作一个自动BannedUser消息,它说我缺少一个参数

时间:2017-12-20 13:41:21

标签: c# discord discord.net

错误:'UserBanned'没有重载匹配委托'Func'

我知道我禁止的用户消息缺少一个参数,我知道我必须在这个参数的括号中添加一些东西,但是我完全不知道我应该放什么。我找了好一两个小时,也许答案被扔在了我的脸上,但我不知道,但我仍然不知道该怎么办。我想我应该在括号中添加一个变量,但我不确定是什么。

public async Task RunBotAsync()
    {
        _client = new DiscordSocketClient(new DiscordSocketConfig
        {
            LogLevel = LogSeverity.Verbose
        });
        _commands = new CommandService();
        _services = new ServiceCollection()
            .AddSingleton(_client)
            .AddSingleton(_commands)
            .BuildServiceProvider();

        string botToken = "Token";

        //event subscriptions
        _client.Log += Log;
        _client.UserJoined += UserJoined;
        _client.UserLeft += UserLeft;
        _client.UserBanned += UserBanned; //<- Error Line

        await RegisterCommandsAsync();

        await _client.LoginAsync(TokenType.Bot, botToken);

        await _client.StartAsync();

        await Task.Delay(-1);
    }

    private async Task UserBanned(SocketGuildUser user, IGuild bloop)
    {
        var guild = user.Guild;
        var announcements = _client.GetChannel(390418472783577088) as SocketTextChannel;
        await announcements.SendMessageAsync($"{user.Mention} was banned from the server.");
    }

1 个答案:

答案 0 :(得分:0)

从这一行:

_client.UserBanned += UserBanned;

引用的函数应该类似于以下内容。

async Task UserBanned(SocketUser user, SocketGuild bloop)
{
    var guild = user.Guild;
    var announcements = _client.GetChannel(390418472783577088) as SocketTextChannel;
    await announcements.SendMessageAsync($"{user.Mention} was banned from the server.");
}

Discord.WebSocket.BaseSocketClient.UserBanned

看起来你需要一个SocketGuild arg而不是IGuild接口。