· 5 years ago · Dec 08, 2020, 12:24 AM
1package com.github.sunrabbit123.Liechu_bot;
2
3import java.awt.Color;
4import java.text.SimpleDateFormat;
5import java.util.Date;
6
7import org.javacord.api.DiscordApi;
8import org.javacord.api.audio.AudioConnection;
9import org.javacord.api.audio.AudioSource;
10import org.javacord.api.entity.channel.ServerVoiceChannel;
11import org.javacord.api.entity.message.Message;
12import org.javacord.api.entity.message.embed.EmbedBuilder;
13import org.javacord.api.event.message.MessageCreateEvent;
14import org.javacord.api.listener.message.MessageCreateListener;
15
16import com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler;
17import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
18import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager;
19import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager;
20import com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager;
21import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
22import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist;
23import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
24
25
26
27
28class StcFunc{
29 public static void logPrint( String content ) {
30 SimpleDateFormat fNow = new SimpleDateFormat("yyyy:MM:dd hh:mm:ss");
31 Date tNow = new Date();
32
33 String ftNow = fNow.format( tNow );
34
35 System.out.println("[LOG " + ftNow + "] : " + content);
36 }
37
38 public static void chatPrint( String content ) {
39 SimpleDateFormat fNow = new SimpleDateFormat("yyyy:MM:dd hh:mm:ss");
40 Date tNow = new Date();
41
42 String ftNow = fNow.format( tNow );
43
44 System.out.println("[Chat " + ftNow + "] : " + content);
45 }
46}
47
48public class Functions implements MessageCreateListener{
49
50 final static String prefix = "라이츄 ";
51 final static String musicPrefix = "츄 ";
52 @Override
53 public void onMessageCreate(MessageCreateEvent ev) {
54 Message msg = ev.getMessage();
55
56 if( msg.getAuthor().isBotUser() ){ return; }
57
58 String content = msg.getContent();
59 StcFunc.chatPrint(ev.getMessageAuthor().getName() + " : " + content);
60 if( content.startsWith(musicPrefix)) {
61 String keyword = content.split(" ")[1];
62 musicPlay(keyword, ev);
63
64
65 } else if( !content.startsWith(prefix)) {
66 String res = ((new CommandManager()).SelectCommand(content));
67 if(res.startsWith("먀아,,,?") || res.startsWith("이츄,,,?")) {
68 return;
69 } else {
70 msg.getChannel().sendMessage(res);
71 }
72 } else {
73 content = content.replace("라이츄 ", "");
74 if( content.contains("굴러") ) {
75 roll(msg);
76 }else if( content.contains("골라")) {
77 choice(msg);
78 }else if( content.contains("잊어") ) {
79 forget(msg);
80 }else if( content.contains("배워") ) {
81 learn(msg);
82 }else if( content.contains("급식") ||
83 content.contains("아침") ||
84 content.contains("조식") ||
85 content.contains("점심") ||
86 content.contains("중식") ||
87 content.contains("저녁") ||
88 content.contains("석식") ||
89 content.contains("밥") ||
90 content.contains("배고파") ||
91 content.contains("헝그리")){
92 meal(ev);
93 }else if( content.contains("주사위") ) {
94 dice(msg);
95 }else {
96 customCommand(msg);
97 }
98
99
100 }
101 }
102 private static int getRand(int end) {
103 return (int)(Math.random()*end);
104 }
105 private static int getRand(int start, int end) {
106 return (int)(Math.random()*end) + start;
107 }
108 private static void roll(Message msg) {
109 switch( getRand(1, 3)){
110 case 1: msg.getChannel().sendMessage("데구르르 쾅!");
111 case 2: msg.getChannel().sendMessage("데구르르.. 꽈당!");
112 case 3: msg.getChannel().sendMessage("데구르르... 데굴");
113 }
114 }
115 private static void dice(Message msg) {
116 msg.getChannel().sendMessage("데구르르....");
117 msg.getChannel().sendMessage(getRand(5)+1 +" 이(가) 나왔습니다!");
118
119 }
120 private static void meal(MessageCreateEvent ev) {
121 Meal_GSM mealMsg = new Meal_GSM(ev.getMessageAuthor().getName(), ev.getMessageAuthor().getAvatar());
122 mealMsg.getMeal(ev.getMessageContent());
123 ev.getMessage().getChannel().sendMessage(mealMsg.getEmbed());
124 }
125 private static void choice(Message msg) {
126 String[] text = msg.getContent().replaceAll("골라 ", "").split(",");
127 String choiced = text[getRand(text.length)];
128 msg.getChannel().sendMessage("제가 고른건.... " + choiced + "입니다!");
129 }
130 private static void learn(Message msg) {
131 String[] content = msg.getContent().replaceAll("라이츄 배워 ", "").split(":");
132 String key = content[0];
133 String value = content[1];
134 String server = msg.getServer().toString().replaceAll("Optional\\[", "").replaceAll("\\]", "");
135 String publisher = msg.getUserAuthor().toString().replaceAll("Optional\\[", "").replaceAll("\\]", "");
136
137 msg.getChannel().sendMessage((new CommandManager()).InsertCommand(server, key, value, publisher));
138
139 }
140 private static void forget(Message msg) {
141 String key = msg.getContent().replaceAll("라이츄 잊어 ", "");
142
143 msg.getChannel().sendMessage((new CommandManager()).DeleteCommand(key));
144 }
145 private static void customCommand(Message msg) {
146 String key = msg.getContent().replaceAll("라이츄 ", "");
147 String res = ((new CommandManager()).SelectCommand(key));
148 msg.getChannel().sendMessage(res);
149 }
150 private static void musicPlay(String keyword, MessageCreateEvent ev) {
151 if(keyword.equals("들어와") || keyword.equals("ㄷ")) {
152 ServerVoiceChannel channel = ev.getMessageAuthor().getConnectedVoiceChannel().get();
153 channel.connect().thenAccept(aC -> {
154 ev.getChannel().sendMessage(new EmbedBuilder()
155 .setDescription(aC.getChannel().getName() + "에 연결했어요!")
156 .setColor(Color.GREEN));
157 }).exceptionally(e -> {
158 ev.getChannel().sendMessage("아고--고 채널에 먼저 연결해주세요");
159 e.printStackTrace();
160 return null;
161 });
162 } else if(keyword.equals("나가") || keyword.equals("퇴출") || keyword.equals("ㅌ") || keyword.equals("ㄴ") || keyword.equals("퇴장")) {
163 ev.getServer().get().getAudioConnection().get().close();
164 ev.getChannel().sendMessage(new EmbedBuilder()
165 .setDescription("안녕히 계세요 여러분~\n 전 이 세상의 모든 굴레와 속박을\n벗어던지고 제 행복을 찾아 떠납니다~")
166 .setColor(Color.RED));
167
168 } else if(keyword.equals("재생") || keyword.equals("ㅈ")){
169 String text = ev.getMessageContent();
170 String[] contents = text.split(" "); text = null;
171 StringBuilder content = new StringBuilder(/*"https://www.youtube.com/results?search_query="*/);
172
173 for(int i = 2; i < contents.length; i++) {
174 content.append(contents[i]+ " ");
175 }
176 String url = content.toString();
177 StcFunc.logPrint(url);
178
179 DiscordApi api = ev.getApi();
180 AudioConnection aC = ev.getServer().get().getAudioConnection().get();
181
182 AudioPlayerManager playerManager = new DefaultAudioPlayerManager();
183 playerManager.registerSourceManager(new YoutubeAudioSourceManager());
184 AudioPlayer player = playerManager.createPlayer();
185
186 AudioSource source = new LavaplayerAudioSource(api, player);
187 aC.setAudioSource(source);
188
189 playerManager.loadItem(url, new AudioLoadResultHandler() {
190
191 @Override
192 public void trackLoaded(AudioTrack track) {
193 player.playTrack(track);
194 }
195
196 @Override
197 public void playlistLoaded(AudioPlaylist playlist) {
198 for (AudioTrack track : playlist.getTracks()) {
199 player.playTrack(track);
200 }
201 }
202
203 @Override
204 public void noMatches() {
205 // Notify the user that we've got nothing
206 }
207
208 @Override
209 public void loadFailed(FriendlyException throwable) {
210 // Notify the user that everything exploded
211 }
212 });
213
214
215 }
216
217
218 }
219}
220
221
222
223