2012-08-31 21:44:11 +00:00
# coding=utf-8
2014-08-27 23:39:31 +00:00
""" Informe les usagers des prochains passages des transports en communs de la RATP """
2015-01-04 22:57:09 +00:00
from nemubot . exception import IRCException
2015-01-03 19:34:44 +00:00
from nemubot . hooks import hook
2014-12-28 16:24:56 +00:00
from more import Response
2012-08-31 21:44:11 +00:00
2014-08-13 13:53:55 +00:00
nemubotversion = 3.4
2012-08-31 21:44:11 +00:00
2014-09-18 23:42:37 +00:00
from . external . src import ratp
2012-08-31 21:44:11 +00:00
def help_full ( ) :
2012-11-04 14:33:04 +00:00
return " !ratp transport line [station]: Donne des informations sur les prochains passages du transport en commun séléctionné à l ' arrêt désiré. Si aucune station n ' est précisée, les liste toutes. "
2012-08-31 21:44:11 +00:00
2014-09-18 23:42:37 +00:00
@hook ( " cmd_hook " , " ratp " )
2012-08-31 21:44:11 +00:00
def ask_ratp ( msg ) :
""" Hook entry from !ratp """
2012-11-04 14:33:04 +00:00
if len ( msg . cmds ) == 4 :
2014-09-18 23:42:37 +00:00
transport = msg . cmds [ 1 ]
line = msg . cmds [ 2 ]
station = msg . cmds [ 3 ]
times = ratp . getNextStopsAtStation ( transport , line , station )
if len ( times ) == 0 :
raise IRCException ( " la station %s n ' existe pas sur le %s ligne %s . " % ( station , transport , line ) )
( time , direction , stationname ) = times [ 0 ]
return Response ( message = [ " \x03 \x02 %s \x03 \x02 direction %s " % ( time , direction ) for time , direction , stationname in times ] ,
title = " Prochains passages du %s ligne %s à l ' arrêt %s " % ( transport , line , stationname ) ,
channel = msg . channel )
2012-11-04 14:33:04 +00:00
elif len ( msg . cmds ) == 3 :
2014-09-18 23:42:37 +00:00
stations = ratp . getAllStations ( msg . cmds [ 1 ] , msg . cmds [ 2 ] )
if len ( stations ) == 0 :
raise IRCException ( " aucune station trouvée. " )
return Response ( [ s for s in stations ] , title = " Stations " , channel = msg . channel )
2012-08-31 21:44:11 +00:00
else :
2014-09-18 05:57:06 +00:00
raise IRCException ( " Mauvais usage, merci de spécifier un type de transport et une ligne, ou de consulter l ' aide du module. " )
2015-06-09 22:59:57 +00:00
@hook ( " cmd_hook " , " ratp_alert " )
def ratp_alert ( msg ) :
if len ( msg . cmds ) == 3 :
transport = msg . cmds [ 1 ]
cause = msg . cmds [ 2 ]
incidents = ratp . getDisturbance ( cause , transport )
return Response ( incidents , channel = msg . channel , nomore = " No more incidents " , count = " ( %d more incidents) " )
else :
raise IRCException ( " Mauvais usage, merci de spécifier un type de transport et un type d ' alerte (alerte, manif, travaux), ou de consulter l ' aide du module. " )