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

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

【问题讨论】:

    标签: c# discord.net


    【解决方案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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-27
        • 2018-12-04
        • 2021-08-12
        • 2020-08-25
        • 2020-01-22
        • 2021-08-02
        • 1970-01-01
        • 2023-03-03
        相关资源
        最近更新 更多