Discord C# 用户加入消息

Posted

技术标签:

【中文标题】Discord C# 用户加入消息【英文标题】:Discord C# User Join messages 【发布时间】:2017-09-12 14:37:44 【问题描述】:

我在 C# 中使用 Discord.Net,制作一个机器人。到目前为止,我的机器人运行良好,但我希望它在用户加入特定服务器时自动为其分配特定角色。我从来没有真正学过任何 C#,只学过一点 C++,所以我知道基本的语法。我该怎么办? 我假设我会使用 UserJoined,但这样做会注意结果告诉我在 += 或 -+ 之前或之后使用它(我理解,但我不明白它在给定场景中的用处)

【问题讨论】:

【参考方案1】:

您提供的信息很少,但这里是如何在所有版本中执行此操作(到目前为止):

这是在依赖映射中,但在“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
 

【讨论】:

+1 帮助解决一个单独的问题。我试图找出提及用户的最简单方法。谢谢@Lunix46! 我将 client.UserJoined 放入 HandleCommandAsync 任务中,但它不起作用。我想把它准确地放在哪里? @ComyarD,这是很久以前的事了,因为它是活跃的。今天可能有更好的方法来解决这些问题。如果你真的想我建议你看看是否有更有效的方法来制作不和谐的机器人:)【参考方案2】:

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

client.UserJoined += HandleUserJoinedAsync;
private async Task HandleUserJoinedAsync(SocketGuildUser gUser)

    if (gUser.IsBot || gUser.IsWebhook) return;
    var dmChannel = await gUser.GetOrCreateDMChannelAsync();
    await dmChannel.SendMessageAsync("Witaj");


【讨论】:

【参考方案3】:

对于所有需要答案的人,在此期间,我留给你这段代码,只是为了向用户的加入发送消息,(1行):

Client.UserJoined += join;

private async Task join(SocketGuildUser user)

    await (user.Guild.DefaultChannel).SendMessageAsync("Text")
    return;

【讨论】:

以上是关于Discord C# 用户加入消息的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 尝试在用户加入语音频道时发送消息

Discord bot c#获取用户信息(不带参数)并发回消息

discord bot c# 读取收到的直接消息

当有人加入特定频道时发送消息 - Discord Bot

C# Discord如何等待带有前缀的消息,然后响应它[关闭]

Discord C# Bot - 删除最新消息