Advertisement
Kailiq

Untitled

Mar 25th, 2020
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.39 KB | None | 0 0
  1. package info.kailiq.listener;
  2.  
  3. import info.kailiq.Secret;
  4. import info.kailiq.manager.*;
  5. import info.kailiq.utils.AccConfig;
  6. import info.kailiq.utils.Config;
  7. import info.kailiq.utils.Setup;
  8. import net.dv8tion.jda.api.EmbedBuilder;
  9. import net.dv8tion.jda.api.entities.Message;
  10. import net.dv8tion.jda.api.entities.MessageChannel;
  11. import net.dv8tion.jda.api.entities.TextChannel;
  12. import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
  13. import net.dv8tion.jda.api.hooks.ListenerAdapter;
  14. import oauth.signpost.OAuth;
  15. import oauth.signpost.OAuthConsumer;
  16. import oauth.signpost.OAuthProvider;
  17. import oauth.signpost.basic.DefaultOAuthConsumer;
  18. import oauth.signpost.basic.DefaultOAuthProvider;
  19. import oauth.signpost.exception.OAuthCommunicationException;
  20. import oauth.signpost.exception.OAuthExpectationFailedException;
  21. import oauth.signpost.exception.OAuthMessageSignerException;
  22. import oauth.signpost.exception.OAuthNotAuthorizedException;
  23.  
  24. import java.awt.*;
  25. import java.util.concurrent.TimeUnit;
  26.  
  27. public class MessageListener extends ListenerAdapter {
  28. private static OAuthConsumer consumer;
  29. private static OAuthProvider provider;
  30.  
  31. @Override
  32. public void onMessageReceived(MessageReceivedEvent event) {
  33. if (event.getAuthor().isBot()) {
  34. return;
  35. } else {
  36. Message message = event.getMessage();
  37. }
  38. Message message = event.getMessage();
  39. String content = message.getContentRaw();
  40. MessageChannel channel = event.getTextChannel();
  41. EmbedBuilder embed = new EmbedBuilder();
  42. /*if(channel.getName().equals("patch")) {
  43. if(content.startsWith("!patch")) {
  44. message.delete().queue();
  45. embed.setTitle("パッチノート v0.2");
  46. embed.setColor(Color.magenta);
  47. embed.addField("1.", ".stop コマンドを追加しました。", false);
  48. embed.addField("2.", ".restart コマンドを追加しました。", false);
  49. channel.sendMessage(embed.build()).queue();
  50. }
  51. } */
  52. if (channel.getName().equalsIgnoreCase("bot")) {
  53. message.delete().queue();
  54. BootManager.channel = channel;
  55. if (Setup.getWaitAnsFav()) {
  56. if (content.equals("yes") || content.equals("no")) {
  57. if (content.equals("yes")) {
  58. ConfigManager.set("auto-fav", "true");
  59. embed.setTitle("セットアップ完了");
  60. embed.setColor(Color.GREEN);
  61. if (ConfigManager.getBoolean("auto-tweet")) {
  62. embed.addField("自動おは/おやツイート機能", "有効", false);
  63. } else {
  64. embed.addField("自動おは/おやツイート機能", "無効", false);
  65. }
  66. if (ConfigManager.getBoolean("auto-reply")) {
  67. embed.addField("自動リプライ機能", "有効", false);
  68. } else {
  69. embed.addField("自動リプライ機能", "無効", false);
  70. }
  71. if (ConfigManager.getBoolean("auto-fav")) {
  72. embed.addField("自動いいね機能", "有効", false);
  73. } else {
  74. embed.addField("自動いいね機能", "無効", false);
  75. }
  76. sendMessage(channel, embed);
  77. AccConfigManager.doneSetup();
  78. }
  79. if (content.equals("no")) {
  80. ConfigManager.set("auto-fav", "false");
  81. embed.setTitle("セットアップ完了");
  82. embed.setColor(Color.GREEN);
  83. if (ConfigManager.getBoolean("auto-tweet")) {
  84. embed.addField("自動おは/おやツイート機能", "有効", false);
  85. } else {
  86. embed.addField("自動おは/おやツイート機能", "無効", false);
  87. }
  88. if (ConfigManager.getBoolean("auto-reply")) {
  89. embed.addField("自動リプライ機能", "有効", false);
  90. } else {
  91. embed.addField("自動リプライ機能", "無効", false);
  92. }
  93. if (ConfigManager.getBoolean("auto-fav")) {
  94. embed.addField("自動いいね機能", "有効", false);
  95. } else {
  96. embed.addField("自動いいね機能", "無効", false);
  97. }
  98. sendMessage(channel, embed);
  99. AccConfigManager.doneSetup();
  100. }
  101. }
  102. }
  103. if (Setup.getWaitAnsReply()) {
  104. if (content.equals("yes") || content.equals("no")) {
  105. if (content.equals("yes")) {
  106. ConfigManager.set("auto-reply", "true");
  107. Setup.setWaitAnsReply(false);
  108. Setup.setWaitAnsFav(true);
  109. }
  110. if (content.equals("no")) {
  111. ConfigManager.set("auto-reply", "false");
  112. Setup.setWaitAnsReply(false);
  113. Setup.setWaitAnsFav(true);
  114. }
  115. }
  116. }
  117. if (Setup.getWaitAnsTweet()) {
  118. if (content.equals("yes") || content.equals("no")) {
  119. ;
  120. if (content.equals("yes")) {
  121. ConfigManager.set("auto-tweet", "true");
  122. Setup.setWaitAnsTweet(false);
  123. Setup.setWaitAnsReply(true);
  124. }
  125. if (content.equals("no")) {
  126. ConfigManager.set("auto-tweet", "false");
  127. Setup.setWaitAnsTweet(false);
  128. Setup.setWaitAnsReply(true);
  129. }
  130. }
  131. }
  132. if (!AccConfigManager.isSetup()) {
  133. if (Setup.getOauth()) {
  134. try {
  135. provider.retrieveAccessToken(consumer, content);
  136. AccConfigManager.addAcc(consumer.getToken(), consumer.getTokenSecret());
  137. ConfigManager.set("select",consumer.getToken());
  138. if (!AccConfigManager.isSetup()) {
  139. AccConfigManager.addAcc(consumer.getToken(), consumer.getTokenSecret());
  140. embed.setTitle("アカウントの追加に成功しました。");
  141. embed.setColor(Color.GREEN);
  142. sendMessage(channel, embed);
  143. embed.setTitle("次のステップに入ります。この質問に1から順番に<yes/no>で答えてください。この質問で設定する項目は後から変えることもできます。");
  144. embed.setColor(Color.YELLOW);
  145. embed.addField("1.", "自動おは/おやツイートは有効にしますか? <yes/no>", false);
  146. embed.addField("2.", "自動リプライは有効にしますか? <yes/no>", false);
  147. embed.addField("3.", "自動いいねは有効にしますか? <yes/no>", false);
  148. sendMessage(channel, embed);
  149. Setup.setOauth(false);
  150. Setup.setWaitAnsTweet(true);
  151. }
  152. } catch (OAuthMessageSignerException | OAuthNotAuthorizedException | OAuthExpectationFailedException | OAuthCommunicationException e) {
  153. e.printStackTrace();
  154. LogManager.log("アカウントの追加に失敗しました。");
  155. }
  156. }
  157. if (content.equals("!setup")) {
  158. String[] args = content.split(" ");
  159. consumer = new DefaultOAuthConsumer(
  160. Secret.getConsumerKey(),
  161. Secret.getConsumerSecret());
  162.  
  163. provider = new DefaultOAuthProvider(
  164. "https://api.twitter.com/oauth/request_token",
  165. "https://api.twitter.com/oauth/access_token",
  166. "https://api.twitter.com/oauth/authorize");
  167.  
  168. String authUrl = null;
  169. try {
  170. authUrl = provider.retrieveRequestToken(consumer, OAuth.OUT_OF_BAND);
  171. embed.setTitle("セットアップが完了していないため、セットアップを開始します。こちらのURLを開いて表示されたPINを入力してください。");
  172. embed.setColor(Color.YELLOW);
  173. embed.addField("URL", authUrl, false);
  174. sendMessage(channel, embed);
  175. Setup.setOauth(true);
  176. } catch (OAuthMessageSignerException | OAuthNotAuthorizedException | OAuthExpectationFailedException | OAuthCommunicationException e) {
  177. e.printStackTrace();
  178. }
  179. }
  180. } else {
  181. if (Setup.getOauth()) {
  182. try {
  183. provider.retrieveAccessToken(consumer, content);
  184. if (AccConfigManager.getList().contains(consumer.getToken() + "=" + consumer.getTokenSecret())) {
  185. embed.setTitle("アカウントはすでに追加されています");
  186. embed.setColor(Color.RED);
  187. sendMessage(channel, embed);
  188. Setup.setOauth(false);
  189. } else {
  190. AccConfigManager.addAcc(consumer.getToken(), consumer.getTokenSecret());
  191. embed.setTitle("アカウントの追加に成功しました。");
  192. embed.setColor(Color.GREEN);
  193. sendMessage(channel, embed);
  194. Setup.setOauth(false);
  195. }
  196. } catch (OAuthMessageSignerException | OAuthNotAuthorizedException | OAuthExpectationFailedException | OAuthCommunicationException e) {
  197. e.printStackTrace();
  198. embed.setTitle("アカウントの追加に失敗しました");
  199. embed.setColor(Color.RED);
  200. sendMessage(channel, embed);
  201. }
  202. }
  203. if (content.startsWith("!acc")) {
  204. String[] args = content.split(" ");
  205. if (args.length == 1) {
  206.  
  207. embed.setTitle("アカウントコマンド一覧");
  208. embed.addField("!acc add", "アカウントの追加を行います。", false);
  209. embed.addField("!acc remove <ユーザー名>", "アカウントの削除を行います。", false);
  210. embed.addField("!acc list", "アカウントの一覧を表示します。", false);
  211. embed.addField("!acc help", "アカウントのヘルプを表示します。", false);
  212. embed.setColor(Color.CYAN);
  213. sendMessage(channel, embed);
  214. }
  215. if (args.length == 2) {
  216. if (args[1].equals("add")) {
  217. consumer = new DefaultOAuthConsumer(
  218. Secret.getConsumerKey(),
  219. Secret.getConsumerSecret());
  220.  
  221. provider = new DefaultOAuthProvider(
  222. "https://api.twitter.com/oauth/request_token",
  223. "https://api.twitter.com/oauth/access_token",
  224. "https://api.twitter.com/oauth/authorize");
  225.  
  226. String authUrl = null;
  227. try {
  228. authUrl = provider.retrieveRequestToken(consumer, OAuth.OUT_OF_BAND);
  229. embed.setTitle("こちらのURLを開いて表示されたPINを入力してください。");
  230. embed.setColor(Color.YELLOW);
  231. embed.addField("URL", authUrl, false);
  232. sendMessage(channel, embed);
  233. Setup.setOauth(true);
  234. } catch (OAuthMessageSignerException | OAuthNotAuthorizedException | OAuthExpectationFailedException | OAuthCommunicationException e) {
  235. e.printStackTrace();
  236. }
  237. }
  238. if (args[1].equals("list")) {
  239.  
  240. embed.setTitle("アカウント一覧");
  241. embed.setColor(Color.CYAN);
  242. if (AccConfigManager.getList().size() == 0) {
  243. // no thing
  244. } else {
  245. for (String str : AccConfigManager.getList()) {
  246. if (str != null) {
  247. if (str.contains("=") && !str.equals("setup=true")) {
  248. String[] acc = str.split("=");
  249. try {
  250. embed.addField("", AccountManager.getName(acc[0], acc[1]) + " (@" + AccountManager.getScreenName(acc[0], acc[1]) + ")", false);
  251. } catch (ArrayIndexOutOfBoundsException ex) {
  252. ex.printStackTrace();
  253. }
  254. }
  255. }
  256. }
  257. }
  258. sendMessage(channel, embed);
  259. }
  260. if (args[1].equals("help")) {
  261.  
  262. embed.setTitle("アカウントコマンド一覧");
  263. embed.addField("!acc add", "アカウントの追加を行います。", false);
  264. embed.addField("!acc remove <ユーザー名>", "アカウントの削除を行います。", false);
  265. embed.addField("!acc list", "アカウントの一覧を表示します。", false);
  266. embed.addField("!acc help", "アカウントのヘルプを表示します。", false);
  267. embed.setColor(Color.CYAN);
  268. sendMessage(channel, embed);
  269. }
  270. }
  271. if (args.length == 3) {
  272. if (args[1].equals("remove")) {
  273. if (AccountManager.getListUserName().contains(args[2])) {
  274. AccConfigManager.removeFromUserName(args[2]);
  275. embed.setTitle("アカウントの削除に成功しました。");
  276. embed.setColor(Color.RED);
  277. sendMessage(channel, embed);
  278. } else {
  279. sendMessage(channel, args[2] + " というユーザーは存在しません。");
  280. }
  281. }
  282. }
  283. }
  284. if(content.startsWith("!start")) {
  285. String token = ConfigManager.getString("select");
  286. if (token != null) {
  287. BootManager.startTwitterBot();
  288. embed.setTitle("Botを起動しました。");
  289. embed.setColor(Color.GREEN);
  290. if (ConfigManager.getBoolean("auto-tweet")) {
  291. embed.addField("自動おは/おやツイート機能", "有効", false);
  292. } else {
  293. embed.addField("自動おは/おやツイート機能", "無効", false);
  294. }
  295. if (ConfigManager.getBoolean("auto-reply")) {
  296. embed.addField("自動リプライ機能", "有効", false);
  297. } else {
  298. embed.addField("自動リプライ機能", "無効", false);
  299. }
  300. if (ConfigManager.getBoolean("auto-fav")) {
  301. embed.addField("自動いいね機能", "有効", false);
  302. } else {
  303. embed.addField("自動いいね機能", "無効", false);
  304. }
  305. sendMessage(channel, embed);
  306. } else {
  307. BootManager.startTwitterBot();
  308. embed.setTitle("Botを起動するユーザーが指定されていません");
  309. embed.setColor(Color.RED);
  310. sendMessage(channel, embed);
  311. }
  312. }
  313. if(content.startsWith("!stop")) {
  314. String token = ConfigManager.getString("select");
  315. if (token != null) {
  316. BootManager.stopTwitterBot();
  317. embed.setTitle("Botを停止しました。");
  318. embed.setColor(Color.RED);
  319. sendMessage(channel, embed);
  320. } else {
  321. BootManager.startTwitterBot();
  322. embed.setTitle("Botを起動するユーザーが指定されていません");
  323. embed.setColor(Color.RED);
  324. sendMessage(channel, embed);
  325. }
  326. }
  327. if(content.startsWith("!restart")) {
  328. String token = ConfigManager.getString("select");
  329. if (token != null) {
  330. BootManager.stopTwitterBot();
  331. BootManager.startTwitterBot();
  332. embed.setTitle("Botを再起動しました。");
  333. if (ConfigManager.getBoolean("auto-tweet")) {
  334. embed.addField("自動おは/おやツイート機能", "有効", false);
  335. } else {
  336. embed.addField("自動おは/おやツイート機能", "無効", false);
  337. }
  338. if (ConfigManager.getBoolean("auto-reply")) {
  339. embed.addField("自動リプライ機能", "有効", false);
  340. } else {
  341. embed.addField("自動リプライ機能", "無効", false);
  342. }
  343. if (ConfigManager.getBoolean("auto-fav")) {
  344. embed.addField("自動いいね機能", "有効", false);
  345. } else {
  346. embed.addField("自動いいね機能", "無効", false);
  347. }
  348. embed.setColor(Color.YELLOW);
  349. sendMessage(channel, embed);
  350. } else {
  351. BootManager.startTwitterBot();
  352. embed.setTitle("Botを起動するユーザーが指定されていません");
  353. embed.setColor(Color.RED);
  354. sendMessage(channel, embed);
  355. }
  356. }
  357. if (content.startsWith("!settings")) {
  358. String[] args = content.split(" ");
  359. if (args.length == 1) {
  360. embed.setTitle("設定コマンド一覧");
  361. embed.addField("!settings selectacc <ユーザー名>", "Botを動かすユーザーを決めます。", false);
  362. embed.addField("!settings status", "設定の状態を確認します。。", false);
  363. embed.addField("!settings list", "設定の一覧を表示します。", false);
  364. embed.addField("!settings help", "設定のヘルプを表示します。", false);
  365. embed.addField("!settings change <fav/reply/tweet> <on/off>","設定の変更をします。", false);
  366. embed.setColor(Color.CYAN);
  367. sendMessage(channel, embed);
  368. }
  369. if(args.length == 2) {
  370. if(args[1].equals("status")) {
  371. embed.setTitle("Botの状態。");
  372. embed.setColor(Color.GREEN);
  373. if (ConfigManager.getBoolean("auto-tweet")) {
  374. embed.addField("自動おは/おやツイート機能", "有効", false);
  375. } else {
  376. embed.addField("自動おは/おやツイート機能", "無効", false);
  377. }
  378. if (ConfigManager.getBoolean("auto-reply")) {
  379. embed.addField("自動リプライ機能", "有効", false);
  380. } else {
  381. embed.addField("自動リプライ機能", "無効", false);
  382. }
  383. if (ConfigManager.getBoolean("auto-fav")) {
  384. embed.addField("自動いいね機能", "有効", false);
  385. } else {
  386. embed.addField("自動いいね機能", "無効", false);
  387. }
  388. sendMessage(channel, embed);
  389. }
  390. if (args[1].equals("list")) {
  391. embed.setTitle("設定");
  392. embed.setColor(Color.GREEN);
  393. if (ConfigManager.getBoolean("auto-tweet")) {
  394. embed.addField("自動おは/おやツイート機能", "有効", false);
  395. } else {
  396. embed.addField("自動おは/おやツイート機能", "無効", false);
  397. }
  398. if (ConfigManager.getBoolean("auto-reply")) {
  399. embed.addField("自動リプライ機能", "有効", false);
  400. } else {
  401. embed.addField("自動リプライ機能", "無効", false);
  402. }
  403. if (ConfigManager.getBoolean("auto-fav")) {
  404. embed.addField("自動いいね機能", "有効", false);
  405. } else {
  406. embed.addField("自動いいね機能", "無効", false);
  407. }
  408. sendMessage(channel, embed);
  409. }
  410. if(args[1].equals("help")) {
  411. embed.setTitle("設定コマンド一覧");
  412. embed.addField("!settings selectacc <ユーザー名>", "Botを動かすユーザーを決めます。", false);
  413. embed.addField("!settings status", "設定の状態を確認します。。", false);
  414. embed.addField("!settings list", "設定の一覧を表示します。", false);
  415. embed.addField("!settings help", "設定のヘルプを表示します。", false);
  416. embed.addField("!settings change <fav/reply/tweet> <on/off>","設定の変更をします。", false);
  417. embed.setColor(Color.CYAN);
  418. sendMessage(channel, embed);
  419. }
  420. }
  421. if(args.length == 3) {
  422. if(args[1].equals("selectacc")) {
  423. if(AccountManager.getListUserName().contains(args[2])) {
  424. ConfigManager.set("select", AccountManager.getTokenFromScreenname(args[2]));
  425. embed.setTitle("Botを動かすアカウントを設定しました。");
  426. embed.setColor(Color.GREEN);
  427. sendMessage(channel, embed);
  428. }
  429. else {
  430. embed.setTitle("そのようなアカウントにはログインしていません。");
  431. embed.setColor(Color.RED);
  432. sendMessage(channel, embed);
  433. }
  434. }
  435. }
  436. if(args.length == 4) {
  437. if(args[1].equals("change")) {
  438. if(args[2].equals("fav") || args[2].equals("reply") || args[2].equals("tweet")) {
  439. if(args[3].equals("on") || args[3].equals("off")) {
  440. if(args[3].equals("on")) {
  441. if(args[2].equals("fav")) {
  442. if(!ConfigManager.getBoolean("auto-fav")) {
  443. ConfigManager.set("auto-fav", "true");
  444. embed.setTitle("自動いいね設定を有効に変更しました。");
  445. embed.setColor(Color.GREEN);
  446. sendMessage(channel, embed);
  447. }
  448. else {
  449. embed.setTitle("すでにその設定は有効です。");
  450. embed.setColor(Color.YELLOW);
  451. sendMessage(channel, embed);
  452. }
  453. }
  454. if(args[2].equals("reply")) {
  455. if(!ConfigManager.getBoolean("auto-reply")) {
  456. ConfigManager.set("auto-reply", "true");
  457. embed.setTitle("自動リプライ設定を有効に変更しました。");
  458. embed.setColor(Color.GREEN);
  459. sendMessage(channel, embed);
  460. }
  461. else {
  462. embed.setTitle("すでにその設定は有効です。");
  463. embed.setColor(Color.YELLOW);
  464. sendMessage(channel, embed);
  465. }
  466. }
  467. if(args[2].equals("tweet")) {
  468. if(!ConfigManager.getBoolean("auto-tweet")) {
  469. ConfigManager.set("auto-tweet", "true");
  470. embed.setTitle("自動ツイート設定を有効に変更しました。");
  471. embed.setColor(Color.GREEN);
  472. sendMessage(channel, embed);
  473. }
  474. else {
  475. embed.setTitle("すでにその設定は有効です。");
  476. embed.setColor(Color.YELLOW);
  477. sendMessage(channel, embed);
  478. }
  479. }
  480. }
  481. else {
  482. if(args[2].equals("fav")) {
  483. if(ConfigManager.getBoolean("auto-fav")) {
  484. ConfigManager.set("auto-fav", "false");
  485. embed.setTitle("自動いいね設定を無効に変更しました。");
  486. embed.setColor(Color.GREEN);
  487. sendMessage(channel, embed);
  488. }
  489. else {
  490. embed.setTitle("すでにその設定は無効です。");
  491. embed.setColor(Color.YELLOW);
  492. sendMessage(channel, embed);
  493. }
  494. }
  495. if(args[2].equals("reply")) {
  496. if(ConfigManager.getBoolean("auto-reply")) {
  497. ConfigManager.set("auto-reply", "false");
  498. embed.setTitle("自動リプライ設定を無効に変更しました。");
  499. embed.setColor(Color.GREEN);
  500. sendMessage(channel, embed);
  501. }
  502. else {
  503. embed.setTitle("すでにその設定は無効です。");
  504. embed.setColor(Color.YELLOW);
  505. sendMessage(channel, embed);
  506. }
  507. }
  508. if(args[2].equals("tweet")) {
  509. if(ConfigManager.getBoolean("auto-tweet")) {
  510. ConfigManager.set("auto-tweet", "false");
  511. embed.setTitle("自動ツイート設定を無効に変更しました。");
  512. embed.setColor(Color.GREEN);
  513. sendMessage(channel, embed);
  514. }
  515. else {
  516. embed.setTitle("すでにその設定は無効です。");
  517. embed.setColor(Color.YELLOW);
  518. sendMessage(channel, embed);
  519. }
  520. }
  521. }
  522. }
  523. else {
  524. embed.setTitle("コマンドの因数がおかしいです");
  525. embed.addField("正しいコマンド", "!settings change <fav/reply/tweet> <on/off>", false);
  526. embed.setColor(Color.RED);
  527. sendMessage(channel, embed);
  528. }
  529. }
  530. else {
  531. embed.setTitle("コマンドの因数がおかしいです");
  532. embed.addField("正しいコマンド", "!settings change <fav/reply/tweet> <on/off>", false);
  533. embed.setColor(Color.RED);
  534. sendMessage(channel, embed);
  535. }
  536. }
  537. }
  538. }
  539. if (content.equals("!help")) {
  540. embed.setTitle("コマンド一覧");
  541. embed.addField("!acc", "アカウントの設定を行います。", false);
  542. embed.addField("!settings", "Botの設定を行います。", false);
  543. embed.addField("!start", "Botを開始します。", false);
  544. embed.addField("!stop", "Botを停止します。", false);
  545. embed.addField("!restart", "Botを再起動します。", false);
  546. embed.setColor(Color.CYAN);
  547. sendMessage(channel, embed);
  548. }
  549. }
  550. }
  551. }
  552. public void sendMessage(MessageChannel channel,String str) {
  553. channel.sendMessage(str).queue();
  554. }
  555. public void sendMessage(MessageChannel channel,EmbedBuilder str) {
  556. channel.sendMessage(str.build()).queue( (m) ->
  557. m.delete().queueAfter(60, TimeUnit.SECONDS
  558. )
  559. );
  560. }
  561. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement