Advertisement
TheRealZeher

Untitled

Jan 23rd, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.82 KB | None | 0 0
  1. package com.trz.exchangebot;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.ObjectInputStream;
  8. import java.io.ObjectOutputStream;
  9. import java.io.PrintWriter;
  10.  
  11. import org.json.JSONObject;
  12. import java.util.ArrayList;
  13. import java.util.Collection;
  14. import java.util.HashMap;
  15. import java.util.List;
  16. import java.util.Map;
  17. import java.util.Scanner;
  18. import java.util.StringTokenizer;
  19. import java.util.function.Function;
  20.  
  21. import com.google.common.util.concurrent.FutureCallback;
  22. import com.trz.exchangebot.api.DropAPI;
  23. import com.trz.exchangebot.api.MessageAPI;
  24. import com.trz.exchangebot.user.Dropper;
  25. import com.trz.exchangebot.user.QueueUser;
  26. import com.trz.exchangebot.user.Receiver;
  27.  
  28. import de.btobastian.javacord.DiscordAPI;
  29. import de.btobastian.javacord.Javacord;
  30. import de.btobastian.javacord.entities.Channel;
  31. import de.btobastian.javacord.entities.Server;
  32. import de.btobastian.javacord.entities.User;
  33. import de.btobastian.javacord.entities.message.Message;
  34. import de.btobastian.javacord.entities.permissions.Role;
  35. import de.btobastian.javacord.listener.message.MessageCreateListener;
  36.  
  37. public class ExhangeBot {
  38.  
  39. public static final String token = "";
  40.  
  41. public static String currentDropQName = "mildbreeze";
  42. public static boolean isDropOpen;
  43. public static boolean isDropQOpen;
  44.  
  45. public static int qLength;
  46. public static int nofdroppers;
  47. public static int userpos;
  48.  
  49. static HashMap<String, Dropper> dropperIds = new HashMap<String, Dropper>();
  50. static HashMap<String, String> activeDroppers = new HashMap<String, String>();
  51. static HashMap<String, Receiver> userIds = new HashMap<String, Receiver>();
  52. static HashMap<String, QueueUser> activeUsers = new HashMap<String, QueueUser>();
  53.  
  54.  
  55. public static void main(String[] args){
  56. DiscordAPI api = Javacord.getApi(token, true);
  57.  
  58. readUsersIdFromFile(userIds);
  59. System.out.println("Reading from file...");
  60.  
  61. api.setWaitForServersOnStartup(false);
  62.  
  63. api.connect(new FutureCallback<DiscordAPI>() {
  64. @Override
  65. public void onSuccess(DiscordAPI api) {
  66.  
  67. api.registerListener(new MessageCreateListener() {
  68.  
  69. //private static int qLength = qLength;
  70.  
  71. @Override
  72. public void onMessageCreate(DiscordAPI api, Message message) {
  73. Channel channel = message.getChannelReceiver();
  74.  
  75. String channelname = "";
  76. String channelid = "";
  77. Server serv = null;
  78. if (channel != null){
  79. channelname = channel.getName();
  80. channelid = channel.getId();
  81. serv = channel.getServer();
  82. //System.out.println(channelid);
  83. }
  84.  
  85. //Channel List
  86. @SuppressWarnings("null")
  87. Channel freedrops = serv.getChannelById("269113741012893696");
  88. Channel announce = serv.getChannelById("269111444526727170");
  89.  
  90. //Role List
  91. Role dropper = serv.getRoleById("269115471855353856");
  92. Role primedropper = serv.getRoleById("269133327108276224");
  93.  
  94. User messageUser = message.getAuthor();
  95. String messageUserName = message.getAuthor().getName();
  96. String messageUserId = messageUser.getId();
  97.  
  98. System.out.println(messageUser);
  99.  
  100. Collection<Role> messageUserRole = messageUser.getRoles(serv);
  101.  
  102. //System.out.println(messageUserName);
  103.  
  104. String dropClosed = "There is no open drop right now, check #freedrops and #announcements for the next one!";
  105. String qPos = "You are position " + userpos + " in the current queue";
  106. String qAdd = "You've been added to the current queue.";
  107. String qRemove = "You've been removed from the current queue.";
  108. String qLeave = "You've left the current queue.";
  109. String qReLeave = "You've already left the current queue";
  110.  
  111. String startDrop = "@here" + " - A free drop lobby is starting, join the queue by sending me `!join " + currentDropQName + "`.";
  112. String endDrop = "@here" + " This free drop lobby is now CLOSED.";
  113. String qEnd = "@here" + " The queue has now closed. Try again next time!";
  114.  
  115. String startDropPmSendName = "Alright! Opening a free drop lobby for " + messageUser.getMentionTag() + "\n \t Your SC name will be given to users and they will add you in-game. \n \t Use `!add X` to add X users to the drop lobby. \n \t Use `!qlength` to see the current queue length.";
  116. String startDropPm = "Alright! Opening a free drop lobby for " + messageUser.getMentionTag() + "\n \t You will have to add users, with the SC names I give you. \n \t Use `!add X` to add X users to the drop lobby. \n \t Use `!qlength` to see the current queue length.";
  117. String alreadyClosed = "There is no open drop to close.";
  118. String alreadyOpen = "There is already a free drop lobby open. No messages sent.";
  119. String qNum = "There are currently " + qLength + " users in the queue.";
  120.  
  121. String join = "Type `!join " + currentDropQName+ "` to join the current queue.";
  122. String noPerm = "You don't have access to that command.";
  123.  
  124. //Bot-command channel monitoring
  125. if(channelname.equals("bot-commands")){
  126. //User commands
  127. if(message.getContent().equals("!join")){
  128. messageUser.sendMessage(join);
  129. message.delete();
  130.  
  131. }
  132.  
  133. else if(message.getContent().equals("!join " + currentDropQName)){
  134. if(isDropOpen){
  135. messageUser.sendMessage(qAdd);
  136. DropAPI.sleep(2);
  137.  
  138. int q = qLength + 1;
  139. qLength += 1;
  140.  
  141. activeUsers.put(messageUserId, new QueueUser(messageUserName, noPerm, 0, messageUserId, q));
  142. messageUser.sendMessage(qPos);
  143. message.delete();
  144. } else {
  145. messageUser.sendMessage(dropClosed);
  146. message.delete();
  147. }
  148. }
  149.  
  150. else if(message.getContent().equals("!pos")){
  151. if(isDropOpen){
  152. if(activeUsers.containsKey(messageUserId)){
  153. messageUser.sendMessage(qPos);
  154. message.delete();
  155. } else {
  156. messageUser.sendMessage("You arent currently in the queue. " + join);
  157. }
  158. } else {
  159. messageUser.sendMessage(dropClosed);
  160. message.delete();
  161. }
  162. }
  163.  
  164. else if(message.getContent().equals("!leave")){
  165. if(isDropOpen){
  166. if(activeUsers.containsKey(messageUserId)){
  167. messageUser.sendMessage(qLeave);
  168.  
  169. DropAPI.sleep(10);
  170. message.delete();
  171. } else {
  172. messageUser.sendMessage(qReLeave);
  173. message.delete();
  174. }
  175. } else {
  176. messageUser.sendMessage(dropClosed);
  177. message.delete();
  178. }
  179. }
  180.  
  181. else if(message.getContent().contains("!register")){
  182. String GTAName;
  183. if(messageUserRole.contains(dropper) || messageUserRole.contains(primedropper)){
  184. if(message.getContent().contains(" ")){
  185. GTAName = message.getContent().substring(message.getContent().indexOf(' ')+ 1).trim();
  186. if(dropperIds.containsKey(messageUserId)){
  187. dropperIds.remove(messageUserId);
  188. DropAPI.sleep(5);
  189. dropperIds.put(messageUserId, new Dropper(messageUserName, GTAName));
  190.  
  191. messageUser.sendMessage("Successfully registered as: " + GTAName + ".");
  192.  
  193. System.out.println("Re-registered dropper to list: " + messageUserName + " | SC: " + GTAName + "| ID: " + messageUserId + " |");
  194. message.delete();
  195. } else {
  196. dropperIds.put(messageUserId, new Dropper(messageUserName, GTAName));
  197.  
  198. messageUser.sendMessage("Successfully registered as: " + GTAName + ".");
  199. System.out.println("Added dropper to list: " + messageUserName + " | SC: " + GTAName + " | ID: " + messageUserId + " |");
  200. message.delete();
  201. }
  202. } else {
  203. GTAName = "";
  204. }
  205. } else {
  206. if(message.getContent().contains(" ")){
  207. GTAName = message.getContent().substring(message.getContent().indexOf(' ')+ 1).trim();
  208. if(userIds.containsKey(messageUserId)){
  209. userIds.remove(messageUserId);
  210. DropAPI.sleep(5);
  211. userIds.put(messageUserId, new Receiver(messageUserName, GTAName, 0, messageUserId));
  212.  
  213. messageUser.sendMessage("Successfully registered as: " + GTAName + ".");
  214. System.out.println("Re-registered user to list: " + messageUserName + " | SC: " + GTAName + " | ID: " + messageUserId + " |");
  215. message.delete();
  216. } else {
  217. userIds.put(messageUserId, new Receiver(messageUserName, GTAName, 0, messageUserId));
  218.  
  219. messageUser.sendMessage("Successfully registered as: " + GTAName + ".");
  220. System.out.println("Added user to list: " + messageUserName + " | SC: " + GTAName + " | ID: " + messageUserId + " |");
  221. message.delete();
  222. }
  223. } else {
  224. GTAName = "";
  225. }
  226. }
  227. }
  228.  
  229. else if(message.getContent().contains("!deregister")){
  230. String GTAName;
  231. if(messageUserRole.contains(dropper) || messageUserRole.contains(primedropper)){
  232. if(message.getContent().contains(" ")){
  233. GTAName = message.getContent().substring(message.getContent().indexOf(' ')+ 1).trim();
  234. if(dropperIds.containsKey(messageUserId)){
  235. dropperIds.remove(messageUserId);
  236. DropAPI.sleep(5);
  237. dropperIds.put(messageUserId, new Dropper(messageUserName, GTAName));
  238.  
  239. System.out.println("Re-registered dropper to list: " + messageUserName + " | SC: " + GTAName + "| ID: " + messageUserId + " |");
  240. } else {
  241. dropperIds.put(messageUserId, new Dropper(messageUserName, GTAName));
  242. System.out.println("Added dropper to list: " + messageUserName + " | SC: " + GTAName + " | ID: " + messageUserId + " |");
  243. }
  244. } else {
  245. GTAName = "";
  246. }
  247. } else {
  248. if(message.getContent().contains(" ")){
  249. GTAName = message.getContent().substring(message.getContent().indexOf(' ')+ 1).trim();
  250. if(userIds.containsKey(messageUserId)){
  251. userIds.remove(messageUserId);
  252. DropAPI.sleep(5);
  253. userIds.put(messageUserId, new Receiver(messageUserName, GTAName, 0, messageUserId));
  254.  
  255. System.out.println("Re-registered user to list: " + messageUserName + " | SC: " + GTAName + "| ID: " + messageUserId + " |");
  256. message.delete();
  257. } else {
  258. userIds.put(messageUserId, new Receiver(messageUserName, GTAName, 0, messageUserId));
  259. System.out.println("Added user to list: " + messageUserName + " | SC: " + GTAName + " | ID: " + messageUserId + " |");
  260. message.delete();
  261. }
  262. } else {
  263. GTAName = "";
  264. }
  265. }
  266. }
  267.  
  268. else if(message.getContent().equals("!opendrop")){
  269. if(isDropOpen){
  270. if(messageUserRole.contains(dropper) || messageUserRole.contains(primedropper)){
  271.  
  272. messageUser.sendMessage(startDropPm);
  273. messageUser.sendMessage(alreadyOpen);
  274.  
  275. DropAPI.sleep(20);
  276. messageUser.sendMessage(qNum);
  277. message.delete();
  278.  
  279. activeDroppers.put(messageUserId, messageUserName);
  280.  
  281. } else {
  282. messageUser.sendMessage(noPerm);
  283. message.delete();
  284. }
  285. } else {
  286. if(messageUserRole.contains(dropper) || messageUserRole.contains(primedropper)){
  287.  
  288. messageUser.sendMessage(startDropPm);
  289.  
  290. DropAPI.sleep(20);
  291. messageUser.sendMessage(qNum);
  292. message.delete();
  293.  
  294. announce.sendMessage(startDrop);
  295. freedrops.sendMessage(startDrop);
  296.  
  297. isDropOpen = true;
  298.  
  299. activeDroppers.put(messageUserId, messageUserName);
  300.  
  301. } else {
  302. messageUser.sendMessage(noPerm);
  303. message.delete();
  304. }
  305. }
  306. }
  307.  
  308. else if(message.getContent().equals("!opendrop sendname")){
  309. if(isDropOpen){
  310. if(messageUserRole.contains(dropper) || messageUserRole.contains(primedropper)){
  311.  
  312. messageUser.sendMessage(startDropPmSendName);
  313. messageUser.sendMessage(alreadyOpen);
  314.  
  315. DropAPI.sleep(20);
  316. messageUser.sendMessage(qNum);
  317. message.delete();
  318.  
  319. activeDroppers.put(messageUserId, messageUserName);
  320.  
  321. } else {
  322. messageUser.sendMessage(noPerm);
  323. message.delete();
  324. }
  325. } else {
  326. if(messageUserRole.contains(dropper) || messageUserRole.contains(primedropper)){
  327.  
  328. messageUser.sendMessage(startDropPmSendName);
  329. DropAPI.sleep(20);
  330. messageUser.sendMessage(qNum);
  331. message.delete();
  332.  
  333. announce.sendMessage(startDrop);
  334. freedrops.sendMessage(startDrop);
  335.  
  336. isDropOpen = true;
  337.  
  338. activeDroppers.put(messageUserId, messageUserName);
  339. } else {
  340. messageUser.sendMessage(noPerm);
  341. message.delete();
  342. }
  343. }
  344.  
  345. }
  346.  
  347. else if(message.getContent().equals("!closedrop")){
  348. if(messageUserRole.contains(dropper) || messageUserRole.contains(primedropper)){
  349. if(activeDroppers.containsKey(messageUserId)){
  350. if(isDropOpen){
  351. isDropOpen = false;
  352. message.delete();
  353.  
  354. announce.sendMessage(endDrop);
  355. freedrops.sendMessage(endDrop);
  356.  
  357. DropAPI.sleep(5);
  358.  
  359. announce.sendMessage(qEnd);
  360. freedrops.sendMessage(qEnd);
  361.  
  362. activeDroppers.remove(messageUserId);
  363. activeUsers.clear();
  364. } else {
  365. messageUser.sendMessage(alreadyClosed);
  366. message.delete();
  367. }
  368. } else {
  369. messageUser.sendMessage("You aren't an active Dropper. No open drop to close.");
  370. message.delete();
  371. }
  372. } else {
  373. messageUser.sendMessage(noPerm);
  374. message.delete();
  375. }
  376. }
  377.  
  378. else if(message.getContent().equals("!shutdown")){
  379. if(messageUserName.equals("TheRealZeher")){
  380. shutdown(api);
  381. message.delete();
  382. }
  383. else{
  384. messageUser.sendMessage(noPerm);
  385. message.delete();
  386. }
  387. }
  388.  
  389. else if(message.getContent().equals("!qnum")){
  390. if(messageUser.getRoles(serv).contains(dropper) || messageUser.getRoles(serv).contains(primedropper)){
  391. if(isDropOpen){
  392. messageUser.sendMessage(qNum);
  393. message.delete();
  394. } else {
  395. messageUser.sendMessage(dropClosed);
  396. message.delete();
  397. }
  398. } else {
  399. messageUser.sendMessage(noPerm);
  400. message.delete();
  401. }
  402. }
  403.  
  404. else if(message.getContent().equals("!droppers")){
  405. System.out.println("Droppers in lobbies: " + activeDroppers);
  406. System.out.println("Droppers: " + dropperIds);
  407. }
  408.  
  409. else if(message.getContent().equals("!users")){
  410. System.out.println("Users in q: " + activeUsers);
  411. System.out.println("Users:" + userIds);
  412. }
  413.  
  414. else if(message.getContent().equals("!addme")){
  415. System.out.println(dropperIds.size());
  416. }
  417.  
  418. }
  419. }
  420. });
  421. }
  422.  
  423. @Override
  424. public void onFailure(Throwable t) {
  425. t.printStackTrace();
  426. }
  427. });
  428. }
  429.  
  430. public static void writeUsersIdToFile(HashMap<String, Receiver> map){
  431. //Write to file
  432. try{
  433. File fileTwo=new File("filetwo.txt");
  434. FileOutputStream fos=new FileOutputStream(fileTwo);
  435. PrintWriter pw=new PrintWriter(fos);
  436.  
  437. for(Map.Entry<String, Receiver> m :map.entrySet()){
  438. pw.println(m.getKey()+"="+m.getValue());
  439. }
  440.  
  441. pw.flush();
  442. pw.close();
  443. fos.close();
  444. }catch(Exception e){}
  445. }
  446.  
  447. public static void readUsersIdFromFile(HashMap<String, Receiver> userIds2){
  448. try{
  449. File toRead=new File("filetwo.txt");
  450. FileInputStream fis=new FileInputStream(toRead);
  451.  
  452. Scanner sc=new Scanner(fis);
  453.  
  454. HashMap<String, String> mapInFile=new HashMap<String, String>();
  455.  
  456. //read data from file line by line:
  457. String currentLine;
  458. while(sc.hasNextLine()){
  459. currentLine=sc.nextLine();
  460. //now tokenize the currentLine:
  461. StringTokenizer st=new StringTokenizer(currentLine,"=",false);
  462. //put tokens ot currentLine in map
  463. mapInFile.put(st.nextToken(), st.nextToken());
  464. }
  465. fis.close();
  466.  
  467. //print All data in MAP
  468. for(Map.Entry<String, String> m :mapInFile.entrySet()){
  469. System.out.println(m.getKey()+" : "+m.getValue());
  470. }
  471. }catch(Exception e){}
  472. }
  473.  
  474. public static void openDrop(Message message, User messageUser){
  475.  
  476. }
  477.  
  478. public static void closeDrop(Message message, User messageUser){
  479.  
  480. }
  481.  
  482. public static void shutdown(DiscordAPI api){
  483.  
  484. writeUsersIdToFile(userIds);
  485. System.out.println("Writing to file...");
  486. DropAPI.sleep(5);
  487. api.disconnect();
  488. DropAPI.sleep(10);
  489. System.exit(0);
  490. }
  491.  
  492. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement