当前位置: 首页 > 知识库问答 >
问题:

如何用JDA将DM发送给有响应的人

陆昕
2023-03-14
event.getUser().openPrivateChannel()
                .flatMap(channel -> channel.sendMessage("Hello, we are sorry you're leaving "+event.getGuild().getName()+", if you don't mind, please tell us why you left or leave any other feedback here, it'll help us improve the server and improve experience for you if you re-join again in the future.\n\nThank you ❤."))
                .queue();

import bot.Main;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.MessageChannel;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

public class Feedback extends ListenerAdapter {
    private final long channelId, authorId;

    public Feedback(MessageChannel channel, User author) {
        this.channelId = channel.getIdLong();
        this.authorId = author.getIdLong();
    }

    @Override
    public void onMessageReceived(MessageReceivedEvent event) {
        if (event.getAuthor().isBot()) return;
        if (event.getAuthor().getIdLong() != authorId) return;
        if (event.getChannel().getIdLong() != channelId) return;
        MessageChannel channel = event.getChannel();
        String content = event.getMessage().getContentRaw();
        event.getChannel().sendMessage("Thanks for your feedback!").queue();
        EmbedBuilder feedback = new EmbedBuilder();
        feedback.setTitle("Automated System Operations - Leaving Feedback");
        feedback.addField("Feedback", content, false);
        feedback.setColor(0xC90004);
        feedback.setAuthor(event.getAuthor().getAsTag()+" - "+event.getAuthor().getId(), "https://support.discord.com/hc/en-us/articles/209572128-How-do-I-log-out-", event.getAuthor().getAvatarUrl());
        feedback.setImage("https://media.discordapp.net/attachments/894913784823566428/896323821336948736/unknown.png?width=384&height=192");
        Main.jda.getGuildById("894913620868202506").getTextChannelById("896322509874540545").sendMessage(feedback.build()).queue();
    }
}

共有1个答案

尉迟阳煦
2023-03-14

您不必猜测如何使用库--这就是文档的用途。任何有价值的库都有列出每一个类、方法和您需要担心的属性的文档。

在谷歌快速搜索“Discord-JDA文档”,我们可以找到Javadoc:https://ci.dv8tion.net/job/jda/javadoc/index.html

你想向用户发送消息,对吗?因此,让我们使用搜索栏并查找用户。Types下的第一个结果是net.dv8tion.jda.api.entities.user。我们现在在https://ci.dv8tion.net/job/jda/javadoc/net/dv8tion/jda/api/entities/user.html

// Send message without response handling
public void sendMessage(User user, String content) {
    user.openPrivateChannel()
        .flatMap(channel -> channel.sendMessage(content))
        .queue();
event.getAuthor().openPrivateChannel().flatMap(channel -> channel.sendMessage("hello")).queue();
 类似资料:
  • 当用户使用一个新的不和谐斜杠命令时,我正试图从我们的不和谐机器人发送一个DM给他们。 代码在下面。Discord文档说`Interaction.Member应该是Discord GuildMember,但是,下面的代码给了我以下错误: TypeError:Interaction.Member.Send不是函数 我可以从data字段调用其他本地函数,但一直无法弄清楚如何将用户DM回来。我假设我做错了

  • 问题内容: 要将内容发送给所有客户,请使用: 要从客户那里接收,您可以使用: 如何将两者结合起来,以便在从客户端接收服务器上的消息时,将消息发送给所有用户,但发送消息的用户除外? 我是否必须通过发送带有消息的客户端ID,然后在客户端进行检查来破解它,还是有一种更简单的方法? 问题答案: 这是我的列表 (已更新为1.0) :

  • 我有一个场景,其中各种JSP击中同一个servlet。对于该servlet有一个过滤器,用于检查托运。基于这种情况,必须将响应从请求发出的地方发送回jsp。不管发送请求的源是什么,servlet都必须执行相同的功能。如何编写通用代码将响应重定向回源JSP。

  • 问题内容: 我有自己的基于JDA的Discord BOT。我需要向特定频道发送短信。我知道如何将消息作为onEvent响应发送,但是在我的情况下,我没有此类事件。 我有:作者(BOT),令牌和通道号。 我的问题是:如何在 没有事件的情况下 将消息发送到此频道? 问题答案: 好吧,我想我知道你的意思。您无需进行任何事件即可获取频道ID和发送消息。您唯一需要做的就是实例化JDA,调用awaitRead

  • 问题内容: 我有一个PHP脚本,需要使用HTTP响应代码(状态代码)进行响应,例如HTTP 200 OK,或一些4XX或5XX代码。 如何在PHP中做到这一点? 问题答案: 我刚刚发现了这个问题,并认为它需要一个更全面的答案: 从 PHP 5.4开始 ,有三种方法可以实现此目的: 自行组装响应代码(PHP> = 4.0) 该函数有一个特殊的用例,可以检测HTTP响应行,并让您用自定义行替换它 但是

  • 我想使用RESTTemplate将POST请求发送到RestAPI。当我执行下面的代码时,它给出了null响应。但是,我得到了http状态代码200 OK。我已经适当地添加了响应模型,所以模型没有问题。甚至,当我将响应类型更改为String时,它也不给我响应。有什么建议吗?