Corrections dans les requêtes
This commit is contained in:
+13
-2
@@ -4,8 +4,10 @@ import argparse
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
from tools.coco
|
||||
from tools.base import CoboBot
|
||||
from tools.processors import MessageDispatcher, CommandsDispatcherProcessor, ConnectionDispatcher
|
||||
from tools.processors.messages import *
|
||||
|
||||
# setting up argument parser
|
||||
parser = argparse.ArgumentParser(description='Le lou bot')
|
||||
@@ -15,9 +17,18 @@ parser.add_argument('--domain', type=str, help='domain to connect to', default="
|
||||
parser.add_argument('--port', type=int, help='port on which to connect the socket', default=80)
|
||||
parser.add_argument('--method', type=str, help='http or https', default="https")
|
||||
|
||||
# setting up coco client
|
||||
cococlient = CocoClient()
|
||||
|
||||
# setting up the various dispatchers
|
||||
coco_commands = CommandsDispatcherProcessor([], "coco", default_response="de?")
|
||||
connect_cmd = CocoConnectCommand(cococlient)
|
||||
msg_cmd = CocoMsgCommand(cococlient)
|
||||
list_cmd = CocoListCommand(cococlient)
|
||||
switch_cmd = CocoSwitchCommand(cococlient)
|
||||
help_cmd = BotHelp([connect_cmd, msg_cmd, list_cmd, switch_cmd])
|
||||
|
||||
coco_commands = CommandsDispatcherProcessor([connect_cmd, msg_cmd, list_cmd, switch_cmd, help_cmd],
|
||||
"coco", default_response="de?")
|
||||
|
||||
root_messages_dispatcher = MessageDispatcher([coco_commands])
|
||||
|
||||
@@ -29,7 +40,7 @@ if __name__ == "__main__":
|
||||
|
||||
cocobot = CoboBot(args.cookie, args.channel, args.domain, args.port, args.method,
|
||||
root_messages_dispatcher, connections_dispatcher)
|
||||
asyncio.get_event_loop().run_until_complete(pikabot.listen())
|
||||
asyncio.get_event_loop().run_until_complete(cocobot.listen())
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
from .client import CocoClient
|
||||
@@ -28,7 +28,7 @@ class Interlocutor:
|
||||
|
||||
def to_botmessage(self):
|
||||
sex_indic = "un homme" if self.is_male else "une femme"
|
||||
return BotMessage("%s est %s de %i ans" %(self.nick, sex_indic, self.age))
|
||||
return BotMessage("Conversation avec %s, %s de %i ans" %(self.nick, sex_indic, self.age))
|
||||
|
||||
def __eq__(self, other):
|
||||
return other.nick == self.nick
|
||||
@@ -47,6 +47,7 @@ class CocoClient:
|
||||
self.user_id = None # type:str
|
||||
self.user_pass = None # type:str
|
||||
self.nick = None # type:str
|
||||
self.is_connected = False
|
||||
|
||||
def _format_history(self, interlocutor: Interlocutor):
|
||||
if interlocutor in self.histories:
|
||||
@@ -61,6 +62,7 @@ class CocoClient:
|
||||
user = Interlocutor.from_string(user_code)
|
||||
self.interlocutors.add(user)
|
||||
self.histories[user].append((user.nick, msg))
|
||||
logging.info("Msg from %s : %s" % (user.nick, msg))
|
||||
|
||||
if user == self.current_interlocutor:
|
||||
out.append(Message("💬 %s: %s" % (user.nick, msg)))
|
||||
@@ -78,6 +80,7 @@ class CocoClient:
|
||||
post_login_req = PostLoginRequest(self.user_id, self.user_pass)
|
||||
post_login_req.retrieve()
|
||||
logging.info("Post login successful")
|
||||
self.is_connected = True
|
||||
|
||||
def pulse(self) -> List[AbstractResponse]:
|
||||
pulse_req = PulseRequest(self.user_id, self.user_pass)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from tools.commons import Message
|
||||
from tools.coco.client import CocoClient
|
||||
from tools.commons import Message, BotMessage
|
||||
from .commons import *
|
||||
|
||||
|
||||
@@ -31,3 +32,83 @@ class CommandsDispatcherProcessor(DispatcherBotProcessor):
|
||||
response = super().process(without_cmd, sender_id, users_list)
|
||||
return Message(self.default_response) if response is None else response
|
||||
|
||||
|
||||
class BaseCocobotCommand(MessageProcessor):
|
||||
|
||||
HELP_STR = None
|
||||
_cmd_suffix = ""
|
||||
|
||||
def __init__(self, cococlient: CocoClient):
|
||||
self.cococlient = cococlient
|
||||
|
||||
def match(self, text : str, sender_id : str, users_list : UserList):
|
||||
return text.lower().startswith(self._cmd_suffix)
|
||||
|
||||
|
||||
class CocoConnectCommand(BaseCocobotCommand):
|
||||
HELP_STR = "/coconnect pseudo age code_postal"
|
||||
_cmd_suffix = "nnect"
|
||||
|
||||
def process(self, text : str, sender_id : str, users_list : UserList):
|
||||
text = text[len(self._cmd_suffix):].strip()
|
||||
try:
|
||||
nick, age, zip_code = text.split()
|
||||
except ValueError:
|
||||
return Message("Pas le bon nombre d'arguments, pd")
|
||||
|
||||
if not nick.isalnum():
|
||||
return Message("Le pseudo doit être alphanumérique, pd")
|
||||
|
||||
if len(age) != 2 or not age.isnumeric():
|
||||
return Message("L'âge c'est avec DEUX chiffres (déso bulbi)")
|
||||
|
||||
if len(zip_code) != 5 or not zip_code.isnumeric():
|
||||
return Message("Le code postal c'est 5 chiffres, pd")
|
||||
|
||||
return self.cococlient.connect(nick, int(age), True, zip_code)
|
||||
|
||||
|
||||
class CocoMsgCommand(BaseCocobotCommand):
|
||||
HELP_STR = "/cocospeak message"
|
||||
_cmd_suffix = "speak"
|
||||
|
||||
def process(self, text : str, sender_id : str, users_list : UserList):
|
||||
text = text[len(self._cmd_suffix):].strip()
|
||||
return self.cococlient.send_msg(text)
|
||||
|
||||
|
||||
class CocoSwitchCommand(BaseCocobotCommand):
|
||||
HELP_STR = "/cocoswitch [pseudo de l'interlocuteur]"
|
||||
_cmd_suffix = "switch"
|
||||
|
||||
def process(self, text : str, sender_id : str, users_list : UserList):
|
||||
text = text[len(self._cmd_suffix):].strip()
|
||||
if text:
|
||||
return self.cococlient.switch_conv(text)
|
||||
else:
|
||||
return self.cococlient.switch_conv()
|
||||
|
||||
|
||||
class CocoListCommand(BaseCocobotCommand):
|
||||
HELP_STR = "/cocolist"
|
||||
_cmd_suffix = "list"
|
||||
|
||||
def process(self, text : str, sender_id : str, users_list : UserList):
|
||||
return self.cococlient.list_convs()
|
||||
|
||||
|
||||
class BotHelp(MessageProcessor):
|
||||
"""Displays the help string for all processors in the list that have a helpt string"""
|
||||
|
||||
def __init__(self, processors_list: List[BaseCocobotCommand]):
|
||||
all_help_strs = [proc.HELP_STR
|
||||
for proc in processors_list if proc.HELP_STR is not None]
|
||||
self.help_str = ", ".join(all_help_strs)
|
||||
|
||||
def match(self, text : str, sender_id : str, users_list : UserList):
|
||||
return text.lower().startswith("help")
|
||||
|
||||
def process(self, text : str, sender_id : str, users_list : UserList):
|
||||
return BotMessage(self.help_str)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user