Discord.net向指定用户发送直接消息(PM)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我是新来的,所以不要评判我,我想创建一个命令!poke向指定用户发送直接消息(PM),但我似乎无法找到一种方法来向用户提供文件并且文档是几乎不存在discord.net。

        commands.CreateCommand("poke")
            .Parameter("target")
            .Do(async (e) =>
            {
                ulong userID = e.User.Id;
                Console.WriteLine("[" + e.Server.Name + "]" + e.User.Name + " just poked " + e.GetArg("target"));
                await e.User.SendMessage("HEY, wake up! ");
            });
提问于
用户回答回答于

有几种方法可以做到这一点,首先是使用命令创建私有通道:

                var c = discord.CreatePrivateChannel(ulong userid);

并从它发送消息,如下所示:

                await c.SendMessage("blabla");

另一种方法是将用户存储为对象,然后从中发送消息。

                User u = null;
                string findUser = e.GetArg("target");

                        u = e.Message.MentionedUsers.FirstOrDefault(); //checking mentioned users
                        u = e.Server.FindUsers(findUser).FirstOrDefault(); //looking for specified user in server

                await u.SendMessage("HEY, wake up! ");

我的命令如下:

        commands.CreateCommand("poke")
            .Parameter("target", ParameterType.Required)
            .Do(async (e) =>
            {
                ulong id;
                User u = null;
                string findUser = e.Args[0];

                if (!string.IsNullOrWhiteSpace(findUser))
                {
                    if (e.Message.MentionedUsers.Count() == 1)
                        u = e.Message.MentionedUsers.FirstOrDefault();
                    else if (e.Server.FindUsers(findUser).Any())
                        u = e.Server.FindUsers(findUser).FirstOrDefault();
                    else if (ulong.TryParse(findUser, out id))
                        u = e.Server.GetUser(id);
                }
                Console.WriteLine("[" + e.Server.Name + "]" + e.User.Name + " just poked " + u);
                await u.SendMessage("HEY, wake up! ");
            });
用户回答回答于

我想我迟到了,但我希望这会有所帮助。这适用于我的机器人。

[Command("Test")]
            public async Task Test(string message)
            {
                if (message== "Send me a message")
                {

                    await Context.User.SendMessageAsync("Here is your DM message! ;)");
                }else
                {
                    await Context.Channel.SendMessageAsync("I can't send you a message");
                }
            }

所属标签

可能回答问题的人

  • 学生

    3 粉丝476 提问7 回答
  • uncle_light

    5 粉丝518 提问6 回答
  • 最爱开车啦

    8 粉丝503 提问5 回答
  • 骑牛看晨曦

    4 粉丝522 提问5 回答

扫码关注云+社区

领取腾讯云代金券