Discord C#用户加入消息

3
我正在使用C#中的Discord.Net,制作一个机器人。到目前为止,我的机器人表现非常好,但是我希望它在特定服务器加入用户时自动分配给他们一个特定的角色。我从未真正学习过任何C#,只了解了一些基本语法。我该如何处理?
我假设我会使用UserJoined,但这样做会导致结果告诉我在+=或-+之前或之后使用它(我理解,但我不理解它在这种情况下的有用性)。
3个回答

6

你提供的信息很少,但以下是各版本的解决方法(至今为止):

这在依赖图中,但在“handlecommand”的下方,即CommandHandleAsync或HandleCommandAsync函数内:

client.UserJoined += AnnounceJoinedUser; //Hook into the UserJoined event of the client.

这是依赖关系图下的内容:

public async Task AnnounceJoinedUser(SocketGuildUser user) //Welcomes the new user
{
    var channel = client.GetChannel(/*/TextChannelID/*/) as SocketTextChannel; // Gets the channel to send the message in
    await channel.SendMessageAsync($"Welcome {user.mention} to {channel.Guild.Name}"); //Welcomes the new user
} 

2
+1 帮助解决了一个不同的问题。我正在尝试找到最简单的方法来提及用户。感谢 @Lunix46! - Hyperion
我把client.UserJoined放在HandleCommandAsync任务中,但它不起作用。我应该把它放在哪里? - Comyar D
@ComyarD,这个已经很久以前就不再活跃了。今天可能有更好的方法来解决这些问题。如果你真的想要,我建议你查找更有效的方法来制作Discord机器人 :) - Lunix46

1

如果您想直接向加入用户发送消息

client.UserJoined += HandleUserJoinedAsync;

private async Task HandleUserJoinedAsync(SocketGuildUser gUser)
{
    if (gUser.IsBot || gUser.IsWebhook) return;
    var dmChannel = await gUser.GetOrCreateDMChannelAsync();
    await dmChannel.SendMessageAsync("Witaj");
}


0

对于所有需要答案的人,在这段时间里,我留下了这段代码,只是用来发送消息到用户的加入(1行):

Client.UserJoined += join;

private async Task join(SocketGuildUser user)
{
    await (user.Guild.DefaultChannel).SendMessageAsync("Text")
    return;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接