Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package info.kailiq.listener;
- import info.kailiq.Secret;
- import info.kailiq.manager.*;
- import info.kailiq.utils.AccConfig;
- import info.kailiq.utils.Config;
- import info.kailiq.utils.Setup;
- import net.dv8tion.jda.api.EmbedBuilder;
- import net.dv8tion.jda.api.entities.Message;
- import net.dv8tion.jda.api.entities.MessageChannel;
- import net.dv8tion.jda.api.entities.TextChannel;
- import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
- import net.dv8tion.jda.api.hooks.ListenerAdapter;
- import oauth.signpost.OAuth;
- import oauth.signpost.OAuthConsumer;
- import oauth.signpost.OAuthProvider;
- import oauth.signpost.basic.DefaultOAuthConsumer;
- import oauth.signpost.basic.DefaultOAuthProvider;
- import oauth.signpost.exception.OAuthCommunicationException;
- import oauth.signpost.exception.OAuthExpectationFailedException;
- import oauth.signpost.exception.OAuthMessageSignerException;
- import oauth.signpost.exception.OAuthNotAuthorizedException;
- import java.awt.*;
- import java.util.concurrent.TimeUnit;
- public class MessageListener extends ListenerAdapter {
- private static OAuthConsumer consumer;
- private static OAuthProvider provider;
- @Override
- public void onMessageReceived(MessageReceivedEvent event) {
- if (event.getAuthor().isBot()) {
- return;
- } else {
- Message message = event.getMessage();
- }
- Message message = event.getMessage();
- String content = message.getContentRaw();
- MessageChannel channel = event.getTextChannel();
- EmbedBuilder embed = new EmbedBuilder();
- /*if(channel.getName().equals("patch")) {
- if(content.startsWith("!patch")) {
- message.delete().queue();
- embed.setTitle("パッチノート v0.2");
- embed.setColor(Color.magenta);
- embed.addField("1.", ".stop コマンドを追加しました。", false);
- embed.addField("2.", ".restart コマンドを追加しました。", false);
- channel.sendMessage(embed.build()).queue();
- }
- } */
- if (channel.getName().equalsIgnoreCase("bot")) {
- message.delete().queue();
- BootManager.channel = channel;
- if (Setup.getWaitAnsFav()) {
- if (content.equals("yes") || content.equals("no")) {
- if (content.equals("yes")) {
- ConfigManager.set("auto-fav", "true");
- embed.setTitle("セットアップ完了");
- embed.setColor(Color.GREEN);
- if (ConfigManager.getBoolean("auto-tweet")) {
- embed.addField("自動おは/おやツイート機能", "有効", false);
- } else {
- embed.addField("自動おは/おやツイート機能", "無効", false);
- }
- if (ConfigManager.getBoolean("auto-reply")) {
- embed.addField("自動リプライ機能", "有効", false);
- } else {
- embed.addField("自動リプライ機能", "無効", false);
- }
- if (ConfigManager.getBoolean("auto-fav")) {
- embed.addField("自動いいね機能", "有効", false);
- } else {
- embed.addField("自動いいね機能", "無効", false);
- }
- sendMessage(channel, embed);
- AccConfigManager.doneSetup();
- }
- if (content.equals("no")) {
- ConfigManager.set("auto-fav", "false");
- embed.setTitle("セットアップ完了");
- embed.setColor(Color.GREEN);
- if (ConfigManager.getBoolean("auto-tweet")) {
- embed.addField("自動おは/おやツイート機能", "有効", false);
- } else {
- embed.addField("自動おは/おやツイート機能", "無効", false);
- }
- if (ConfigManager.getBoolean("auto-reply")) {
- embed.addField("自動リプライ機能", "有効", false);
- } else {
- embed.addField("自動リプライ機能", "無効", false);
- }
- if (ConfigManager.getBoolean("auto-fav")) {
- embed.addField("自動いいね機能", "有効", false);
- } else {
- embed.addField("自動いいね機能", "無効", false);
- }
- sendMessage(channel, embed);
- AccConfigManager.doneSetup();
- }
- }
- }
- if (Setup.getWaitAnsReply()) {
- if (content.equals("yes") || content.equals("no")) {
- if (content.equals("yes")) {
- ConfigManager.set("auto-reply", "true");
- Setup.setWaitAnsReply(false);
- Setup.setWaitAnsFav(true);
- }
- if (content.equals("no")) {
- ConfigManager.set("auto-reply", "false");
- Setup.setWaitAnsReply(false);
- Setup.setWaitAnsFav(true);
- }
- }
- }
- if (Setup.getWaitAnsTweet()) {
- if (content.equals("yes") || content.equals("no")) {
- ;
- if (content.equals("yes")) {
- ConfigManager.set("auto-tweet", "true");
- Setup.setWaitAnsTweet(false);
- Setup.setWaitAnsReply(true);
- }
- if (content.equals("no")) {
- ConfigManager.set("auto-tweet", "false");
- Setup.setWaitAnsTweet(false);
- Setup.setWaitAnsReply(true);
- }
- }
- }
- if (!AccConfigManager.isSetup()) {
- if (Setup.getOauth()) {
- try {
- provider.retrieveAccessToken(consumer, content);
- AccConfigManager.addAcc(consumer.getToken(), consumer.getTokenSecret());
- ConfigManager.set("select",consumer.getToken());
- if (!AccConfigManager.isSetup()) {
- AccConfigManager.addAcc(consumer.getToken(), consumer.getTokenSecret());
- embed.setTitle("アカウントの追加に成功しました。");
- embed.setColor(Color.GREEN);
- sendMessage(channel, embed);
- embed.setTitle("次のステップに入ります。この質問に1から順番に<yes/no>で答えてください。この質問で設定する項目は後から変えることもできます。");
- embed.setColor(Color.YELLOW);
- embed.addField("1.", "自動おは/おやツイートは有効にしますか? <yes/no>", false);
- embed.addField("2.", "自動リプライは有効にしますか? <yes/no>", false);
- embed.addField("3.", "自動いいねは有効にしますか? <yes/no>", false);
- sendMessage(channel, embed);
- Setup.setOauth(false);
- Setup.setWaitAnsTweet(true);
- }
- } catch (OAuthMessageSignerException | OAuthNotAuthorizedException | OAuthExpectationFailedException | OAuthCommunicationException e) {
- e.printStackTrace();
- LogManager.log("アカウントの追加に失敗しました。");
- }
- }
- if (content.equals("!setup")) {
- String[] args = content.split(" ");
- consumer = new DefaultOAuthConsumer(
- Secret.getConsumerKey(),
- Secret.getConsumerSecret());
- provider = new DefaultOAuthProvider(
- "https://api.twitter.com/oauth/request_token",
- "https://api.twitter.com/oauth/access_token",
- "https://api.twitter.com/oauth/authorize");
- String authUrl = null;
- try {
- authUrl = provider.retrieveRequestToken(consumer, OAuth.OUT_OF_BAND);
- embed.setTitle("セットアップが完了していないため、セットアップを開始します。こちらのURLを開いて表示されたPINを入力してください。");
- embed.setColor(Color.YELLOW);
- embed.addField("URL", authUrl, false);
- sendMessage(channel, embed);
- Setup.setOauth(true);
- } catch (OAuthMessageSignerException | OAuthNotAuthorizedException | OAuthExpectationFailedException | OAuthCommunicationException e) {
- e.printStackTrace();
- }
- }
- } else {
- if (Setup.getOauth()) {
- try {
- provider.retrieveAccessToken(consumer, content);
- if (AccConfigManager.getList().contains(consumer.getToken() + "=" + consumer.getTokenSecret())) {
- embed.setTitle("アカウントはすでに追加されています");
- embed.setColor(Color.RED);
- sendMessage(channel, embed);
- Setup.setOauth(false);
- } else {
- AccConfigManager.addAcc(consumer.getToken(), consumer.getTokenSecret());
- embed.setTitle("アカウントの追加に成功しました。");
- embed.setColor(Color.GREEN);
- sendMessage(channel, embed);
- Setup.setOauth(false);
- }
- } catch (OAuthMessageSignerException | OAuthNotAuthorizedException | OAuthExpectationFailedException | OAuthCommunicationException e) {
- e.printStackTrace();
- embed.setTitle("アカウントの追加に失敗しました");
- embed.setColor(Color.RED);
- sendMessage(channel, embed);
- }
- }
- if (content.startsWith("!acc")) {
- String[] args = content.split(" ");
- if (args.length == 1) {
- embed.setTitle("アカウントコマンド一覧");
- embed.addField("!acc add", "アカウントの追加を行います。", false);
- embed.addField("!acc remove <ユーザー名>", "アカウントの削除を行います。", false);
- embed.addField("!acc list", "アカウントの一覧を表示します。", false);
- embed.addField("!acc help", "アカウントのヘルプを表示します。", false);
- embed.setColor(Color.CYAN);
- sendMessage(channel, embed);
- }
- if (args.length == 2) {
- if (args[1].equals("add")) {
- consumer = new DefaultOAuthConsumer(
- Secret.getConsumerKey(),
- Secret.getConsumerSecret());
- provider = new DefaultOAuthProvider(
- "https://api.twitter.com/oauth/request_token",
- "https://api.twitter.com/oauth/access_token",
- "https://api.twitter.com/oauth/authorize");
- String authUrl = null;
- try {
- authUrl = provider.retrieveRequestToken(consumer, OAuth.OUT_OF_BAND);
- embed.setTitle("こちらのURLを開いて表示されたPINを入力してください。");
- embed.setColor(Color.YELLOW);
- embed.addField("URL", authUrl, false);
- sendMessage(channel, embed);
- Setup.setOauth(true);
- } catch (OAuthMessageSignerException | OAuthNotAuthorizedException | OAuthExpectationFailedException | OAuthCommunicationException e) {
- e.printStackTrace();
- }
- }
- if (args[1].equals("list")) {
- embed.setTitle("アカウント一覧");
- embed.setColor(Color.CYAN);
- if (AccConfigManager.getList().size() == 0) {
- // no thing
- } else {
- for (String str : AccConfigManager.getList()) {
- if (str != null) {
- if (str.contains("=") && !str.equals("setup=true")) {
- String[] acc = str.split("=");
- try {
- embed.addField("", AccountManager.getName(acc[0], acc[1]) + " (@" + AccountManager.getScreenName(acc[0], acc[1]) + ")", false);
- } catch (ArrayIndexOutOfBoundsException ex) {
- ex.printStackTrace();
- }
- }
- }
- }
- }
- sendMessage(channel, embed);
- }
- if (args[1].equals("help")) {
- embed.setTitle("アカウントコマンド一覧");
- embed.addField("!acc add", "アカウントの追加を行います。", false);
- embed.addField("!acc remove <ユーザー名>", "アカウントの削除を行います。", false);
- embed.addField("!acc list", "アカウントの一覧を表示します。", false);
- embed.addField("!acc help", "アカウントのヘルプを表示します。", false);
- embed.setColor(Color.CYAN);
- sendMessage(channel, embed);
- }
- }
- if (args.length == 3) {
- if (args[1].equals("remove")) {
- if (AccountManager.getListUserName().contains(args[2])) {
- AccConfigManager.removeFromUserName(args[2]);
- embed.setTitle("アカウントの削除に成功しました。");
- embed.setColor(Color.RED);
- sendMessage(channel, embed);
- } else {
- sendMessage(channel, args[2] + " というユーザーは存在しません。");
- }
- }
- }
- }
- if(content.startsWith("!start")) {
- String token = ConfigManager.getString("select");
- if (token != null) {
- BootManager.startTwitterBot();
- embed.setTitle("Botを起動しました。");
- embed.setColor(Color.GREEN);
- if (ConfigManager.getBoolean("auto-tweet")) {
- embed.addField("自動おは/おやツイート機能", "有効", false);
- } else {
- embed.addField("自動おは/おやツイート機能", "無効", false);
- }
- if (ConfigManager.getBoolean("auto-reply")) {
- embed.addField("自動リプライ機能", "有効", false);
- } else {
- embed.addField("自動リプライ機能", "無効", false);
- }
- if (ConfigManager.getBoolean("auto-fav")) {
- embed.addField("自動いいね機能", "有効", false);
- } else {
- embed.addField("自動いいね機能", "無効", false);
- }
- sendMessage(channel, embed);
- } else {
- BootManager.startTwitterBot();
- embed.setTitle("Botを起動するユーザーが指定されていません");
- embed.setColor(Color.RED);
- sendMessage(channel, embed);
- }
- }
- if(content.startsWith("!stop")) {
- String token = ConfigManager.getString("select");
- if (token != null) {
- BootManager.stopTwitterBot();
- embed.setTitle("Botを停止しました。");
- embed.setColor(Color.RED);
- sendMessage(channel, embed);
- } else {
- BootManager.startTwitterBot();
- embed.setTitle("Botを起動するユーザーが指定されていません");
- embed.setColor(Color.RED);
- sendMessage(channel, embed);
- }
- }
- if(content.startsWith("!restart")) {
- String token = ConfigManager.getString("select");
- if (token != null) {
- BootManager.stopTwitterBot();
- BootManager.startTwitterBot();
- embed.setTitle("Botを再起動しました。");
- if (ConfigManager.getBoolean("auto-tweet")) {
- embed.addField("自動おは/おやツイート機能", "有効", false);
- } else {
- embed.addField("自動おは/おやツイート機能", "無効", false);
- }
- if (ConfigManager.getBoolean("auto-reply")) {
- embed.addField("自動リプライ機能", "有効", false);
- } else {
- embed.addField("自動リプライ機能", "無効", false);
- }
- if (ConfigManager.getBoolean("auto-fav")) {
- embed.addField("自動いいね機能", "有効", false);
- } else {
- embed.addField("自動いいね機能", "無効", false);
- }
- embed.setColor(Color.YELLOW);
- sendMessage(channel, embed);
- } else {
- BootManager.startTwitterBot();
- embed.setTitle("Botを起動するユーザーが指定されていません");
- embed.setColor(Color.RED);
- sendMessage(channel, embed);
- }
- }
- if (content.startsWith("!settings")) {
- String[] args = content.split(" ");
- if (args.length == 1) {
- embed.setTitle("設定コマンド一覧");
- embed.addField("!settings selectacc <ユーザー名>", "Botを動かすユーザーを決めます。", false);
- embed.addField("!settings status", "設定の状態を確認します。。", false);
- embed.addField("!settings list", "設定の一覧を表示します。", false);
- embed.addField("!settings help", "設定のヘルプを表示します。", false);
- embed.addField("!settings change <fav/reply/tweet> <on/off>","設定の変更をします。", false);
- embed.setColor(Color.CYAN);
- sendMessage(channel, embed);
- }
- if(args.length == 2) {
- if(args[1].equals("status")) {
- embed.setTitle("Botの状態。");
- embed.setColor(Color.GREEN);
- if (ConfigManager.getBoolean("auto-tweet")) {
- embed.addField("自動おは/おやツイート機能", "有効", false);
- } else {
- embed.addField("自動おは/おやツイート機能", "無効", false);
- }
- if (ConfigManager.getBoolean("auto-reply")) {
- embed.addField("自動リプライ機能", "有効", false);
- } else {
- embed.addField("自動リプライ機能", "無効", false);
- }
- if (ConfigManager.getBoolean("auto-fav")) {
- embed.addField("自動いいね機能", "有効", false);
- } else {
- embed.addField("自動いいね機能", "無効", false);
- }
- sendMessage(channel, embed);
- }
- if (args[1].equals("list")) {
- embed.setTitle("設定");
- embed.setColor(Color.GREEN);
- if (ConfigManager.getBoolean("auto-tweet")) {
- embed.addField("自動おは/おやツイート機能", "有効", false);
- } else {
- embed.addField("自動おは/おやツイート機能", "無効", false);
- }
- if (ConfigManager.getBoolean("auto-reply")) {
- embed.addField("自動リプライ機能", "有効", false);
- } else {
- embed.addField("自動リプライ機能", "無効", false);
- }
- if (ConfigManager.getBoolean("auto-fav")) {
- embed.addField("自動いいね機能", "有効", false);
- } else {
- embed.addField("自動いいね機能", "無効", false);
- }
- sendMessage(channel, embed);
- }
- if(args[1].equals("help")) {
- embed.setTitle("設定コマンド一覧");
- embed.addField("!settings selectacc <ユーザー名>", "Botを動かすユーザーを決めます。", false);
- embed.addField("!settings status", "設定の状態を確認します。。", false);
- embed.addField("!settings list", "設定の一覧を表示します。", false);
- embed.addField("!settings help", "設定のヘルプを表示します。", false);
- embed.addField("!settings change <fav/reply/tweet> <on/off>","設定の変更をします。", false);
- embed.setColor(Color.CYAN);
- sendMessage(channel, embed);
- }
- }
- if(args.length == 3) {
- if(args[1].equals("selectacc")) {
- if(AccountManager.getListUserName().contains(args[2])) {
- ConfigManager.set("select", AccountManager.getTokenFromScreenname(args[2]));
- embed.setTitle("Botを動かすアカウントを設定しました。");
- embed.setColor(Color.GREEN);
- sendMessage(channel, embed);
- }
- else {
- embed.setTitle("そのようなアカウントにはログインしていません。");
- embed.setColor(Color.RED);
- sendMessage(channel, embed);
- }
- }
- }
- if(args.length == 4) {
- if(args[1].equals("change")) {
- if(args[2].equals("fav") || args[2].equals("reply") || args[2].equals("tweet")) {
- if(args[3].equals("on") || args[3].equals("off")) {
- if(args[3].equals("on")) {
- if(args[2].equals("fav")) {
- if(!ConfigManager.getBoolean("auto-fav")) {
- ConfigManager.set("auto-fav", "true");
- embed.setTitle("自動いいね設定を有効に変更しました。");
- embed.setColor(Color.GREEN);
- sendMessage(channel, embed);
- }
- else {
- embed.setTitle("すでにその設定は有効です。");
- embed.setColor(Color.YELLOW);
- sendMessage(channel, embed);
- }
- }
- if(args[2].equals("reply")) {
- if(!ConfigManager.getBoolean("auto-reply")) {
- ConfigManager.set("auto-reply", "true");
- embed.setTitle("自動リプライ設定を有効に変更しました。");
- embed.setColor(Color.GREEN);
- sendMessage(channel, embed);
- }
- else {
- embed.setTitle("すでにその設定は有効です。");
- embed.setColor(Color.YELLOW);
- sendMessage(channel, embed);
- }
- }
- if(args[2].equals("tweet")) {
- if(!ConfigManager.getBoolean("auto-tweet")) {
- ConfigManager.set("auto-tweet", "true");
- embed.setTitle("自動ツイート設定を有効に変更しました。");
- embed.setColor(Color.GREEN);
- sendMessage(channel, embed);
- }
- else {
- embed.setTitle("すでにその設定は有効です。");
- embed.setColor(Color.YELLOW);
- sendMessage(channel, embed);
- }
- }
- }
- else {
- if(args[2].equals("fav")) {
- if(ConfigManager.getBoolean("auto-fav")) {
- ConfigManager.set("auto-fav", "false");
- embed.setTitle("自動いいね設定を無効に変更しました。");
- embed.setColor(Color.GREEN);
- sendMessage(channel, embed);
- }
- else {
- embed.setTitle("すでにその設定は無効です。");
- embed.setColor(Color.YELLOW);
- sendMessage(channel, embed);
- }
- }
- if(args[2].equals("reply")) {
- if(ConfigManager.getBoolean("auto-reply")) {
- ConfigManager.set("auto-reply", "false");
- embed.setTitle("自動リプライ設定を無効に変更しました。");
- embed.setColor(Color.GREEN);
- sendMessage(channel, embed);
- }
- else {
- embed.setTitle("すでにその設定は無効です。");
- embed.setColor(Color.YELLOW);
- sendMessage(channel, embed);
- }
- }
- if(args[2].equals("tweet")) {
- if(ConfigManager.getBoolean("auto-tweet")) {
- ConfigManager.set("auto-tweet", "false");
- embed.setTitle("自動ツイート設定を無効に変更しました。");
- embed.setColor(Color.GREEN);
- sendMessage(channel, embed);
- }
- else {
- embed.setTitle("すでにその設定は無効です。");
- embed.setColor(Color.YELLOW);
- sendMessage(channel, embed);
- }
- }
- }
- }
- else {
- embed.setTitle("コマンドの因数がおかしいです");
- embed.addField("正しいコマンド", "!settings change <fav/reply/tweet> <on/off>", false);
- embed.setColor(Color.RED);
- sendMessage(channel, embed);
- }
- }
- else {
- embed.setTitle("コマンドの因数がおかしいです");
- embed.addField("正しいコマンド", "!settings change <fav/reply/tweet> <on/off>", false);
- embed.setColor(Color.RED);
- sendMessage(channel, embed);
- }
- }
- }
- }
- if (content.equals("!help")) {
- embed.setTitle("コマンド一覧");
- embed.addField("!acc", "アカウントの設定を行います。", false);
- embed.addField("!settings", "Botの設定を行います。", false);
- embed.addField("!start", "Botを開始します。", false);
- embed.addField("!stop", "Botを停止します。", false);
- embed.addField("!restart", "Botを再起動します。", false);
- embed.setColor(Color.CYAN);
- sendMessage(channel, embed);
- }
- }
- }
- }
- public void sendMessage(MessageChannel channel,String str) {
- channel.sendMessage(str).queue();
- }
- public void sendMessage(MessageChannel channel,EmbedBuilder str) {
- channel.sendMessage(str.build()).queue( (m) ->
- m.delete().queueAfter(60, TimeUnit.SECONDS
- )
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement