Browse Source

Create first interface that will be used for all Bots

The goal is to generalise the behaviour on all the different ways of
communication.
Martin Passard 6 years ago
parent
commit
ca7b7036bc
3 changed files with 100 additions and 2 deletions
  1. 15 0
      src/main/Bot.java
  2. 1 1
      src/main/IRCBot.java
  3. 84 1
      src/socials/TwitterBot.java

+ 15 - 0
src/main/Bot.java

@@ -0,0 +1,15 @@
+package main;
+
+import java.util.List;
+
+public interface Bot {
+
+	public void onMessage(String channel, String sender,
+			String login, String hostname, String message);
+	
+	public void sendMessage(String sender,String channel,String message);
+	
+	public void sendMessages(String sender, String channel,List<String> messages);
+	
+	public void sendMessages(String sender, String channel, AffichableSurIRC affichable);
+}

+ 1 - 1
src/main/IRCBot.java

@@ -14,7 +14,7 @@ import comportement.Comportement;
 import data.Message;
 import rss.RssDataRemainder;
 
-public class IRCBot extends PircBot {
+public class IRCBot extends PircBot implements Bot {
 
 	private volatile static long TIME_BETWEEN_MESSAGES = 200;
 	private List<Action> actions = Action.getAllActions(this);

+ 84 - 1
src/socials/TwitterBot.java

@@ -1,10 +1,93 @@
 package socials;
 
+import java.util.List;
 
-public class TwitterBot {
+import actions.Action;
+import data.Message;
+import main.AffichableSurIRC;
+import main.Bot;
+import twitter4j.DirectMessage;
+import twitter4j.IDs;
+import twitter4j.ResponseList;
+import twitter4j.Twitter;
+import twitter4j.TwitterAdapter;
+import twitter4j.TwitterException;
+import twitter4j.TwitterFactory;
 
+public class TwitterBot extends TwitterAdapter implements Bot {
+	
+	private Twitter sender;
+	private String login;
+	
 	public TwitterBot() {
+		super();
+		this.sender = TwitterFactory.getSingleton();
+		try {
+			this.login = sender.getScreenName();
+		} catch (IllegalStateException | TwitterException e) {
+			this.login = "UneFede";
+			e.printStackTrace();
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see twitter4j.TwitterAdapter#gotDirectMessage(twitter4j.DirectMessage)
+	 */
+	@Override
+	public void gotDirectMessage(DirectMessage message) {
+		super.gotDirectMessage(message);
+		String s = message.getText();
+		Message m = new Message(s);
+		try {
+			onMessage("", sender.showUser(message.getId()).getName(), s, "", s);
+		} catch (TwitterException e) {
+			
+			e.printStackTrace();
+		}
+		
+	}
+
+	
+
+	/* (non-Javadoc)
+	 * @see twitter4j.TwitterAdapter#gotIncomingFriendships(twitter4j.IDs)
+	 */
+	@Override
+	public void gotIncomingFriendships(IDs ids) {
+		super.gotIncomingFriendships(ids);
+		do{
+			try {
+				sender.sendDirectMessage(ids.getNextCursor(), "Bonjour! Pour apprendre toutes mes commandes, envoyez moi "+Action.CARACTERE_COMMANDE+"help");
+			} catch (TwitterException e) {
+				e.printStackTrace();
+			}
+		}while(ids.hasNext());
+	}
+
+	@Override
+	public void onMessage(String channel, String sender, String login, String hostname, String message) {
+		
 		
 	}
 
+	@Override
+	public void sendMessage(String sender, String channel, String message) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void sendMessages(String sender, String channel, List<String> messages) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void sendMessages(String sender, String channel, AffichableSurIRC affichable) {
+		// TODO Auto-generated method stub
+		
+	}
+		
+	
+
 }