首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Discord.net向指定用户发送直接消息(PM)

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

Stack Overflow用户
提问于 2017-05-12 23:59:21
回答 3查看 13.1K关注 0票数 2

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

代码语言:javascript
复制
        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! ");
            });
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-31 23:42:04

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

代码语言:javascript
复制
                var c = discord.CreatePrivateChannel(ulong userid);

并像这样发送消息:

代码语言:javascript
复制
                await c.SendMessage("blabla");

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

代码语言:javascript
复制
                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! ");

我的命令看起来像这样:

代码语言:javascript
复制
        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! ");
            });
票数 6
EN

Stack Overflow用户

发布于 2019-06-24 00:24:18

我想我来晚了,但我希望这能帮上忙。这对我的机器人起作用了。

代码语言:javascript
复制
[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
EN

Stack Overflow用户

发布于 2018-01-07 02:30:35

或者,

代码语言:javascript
复制
var u = Context.Message.Author;  // Or some other means of getting user_id
string msg = "your message";
await Discord.UserExtensions.SendMessageAsync(u, msg);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43942006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档