def run(self) -> None: discord_client = discord.Client() weather_service = WeatherService( self._settings.integration_settings.open_weather_map_api_key, self._settings.integration_settings.weather_underground_api_key) message_factory = MessageFactory(self._settings) command_handler = CommandHandler(self._settings, weather_service, discord_client, message_factory) weather_discord_service = WeatherDiscordService( self._settings.measurement_system, self._settings.home_settings, weather_service, discord_client) @discord_client.event async def on_message(message) -> None: await command_handler.handle(message) discord_client.loop.create_task( weather_discord_service.send_home_forecast()) discord_client.loop.create_task( weather_discord_service.update_profile()) discord_client.loop.create_task( weather_discord_service.update_presence()) discord_client.run( self._settings.integration_settings.discord_bot_token)
async def handle_help(self, command) -> None: logging.info("handling help...") msg = MessageFactory.format_help() await self._discord_client.send_message(command.channel, msg)
async def execute(self) -> None: msg = MessageFactory.format_presence(self._weather, self._should_help) await self._discord_client.change_presence(game=discord.Game(name=msg))
start_response('200 OK', [('Content-type', 'charset=utf-8')]) return open('./sms.html') # Check whether the parameters are legal. if 'from' not in url_para or 'pswd' not in url_para or 'msg' not in url_para: status = '200 OK' response_headers = [('Content-type', 'application/json;charset=utf-8')] start_response(status, response_headers) return [json.dumps({"sendCode": -1, "info": u"参数错误!"})] # If receiver's mobile phone number is not set, send to the sender as default. if 'to' not in url_para or url_para['to'] == '': url_para['to'] = url_para['from'] else: url_para['to'] = url_para['to'].split(',') config = ConfigParser.ConfigParser() try: config.read('./sms/config.ini') msg_cls_type = config.get('Message', 'class type') except Exception, error: print(error) print('Use short fetion message as default message sender class.') msg_cls_type = 'Short Fetion' sms_sender = MessageFactory.create_message(msg_cls_type, url_para['from'], url_para['pswd']) status = '200 OK' response_headers = [('Content-type', 'application/json;charset=utf-8')] start_response(status, response_headers) return [json.dumps(sms_sender.send(url_para['msg'], url_para['to']))]
for f in self.filter_list: if f.matches(msg): return True return False class AndFilter: def __init__(self, filter_list): self.filter_list = filter_list def matches(self, msg): for f in self.filter_list: if not f.matches(msg): return False return True if __name__ == '__main__': msg_factory = MessageFactory() msg_factory.set_sender("*****@*****.**") msg_factory.set_content("ilikecats") msg_factory.set_recipients(["*****@*****.**", "*****@*****.**"]) msg = msg_factory.build() re_filter1 = RegexFilter("ihate.*"); print "regexfilter1 = ", re_filter1.matches(msg) re_filter2 = RegexFilter(".*cats"); print "regexfilter2 = ", re_filter2.matches(msg) word_filter1 = WordFilter("doesanyonereadthis?, ilikecatz"); print "wordfilter1 = ", word_filter1.matches(msg) word_filter2 = WordFilter("catsaretasty, ilikecats");
#!/usr/bin/env python # encoding:utf-8 __author__ = 'Jayvic' __date__ = '14-7-22' import ConfigParser import getpass from message_factory import MessageFactory config = ConfigParser.ConfigParser() config.read('config.ini') msg_cls_type = config.get('Message', 'class type') from_tel = raw_input('Your mobile number: ') password = getpass.getpass('Your password: '******'Send to: ') msg = raw_input('Content: ') if (to_tel == '') or (to_tel == from_tel): sms_sender.send_to_self(msg) else: sms_sender.send(msg, to_tel.split(','))
def send_image_frame(self, image): self.__logger.debug(__name__ + "sending image frame with size {0}".format(image.size)) command = MessageFactory.create_display_frame_message(image) self.send_message(command)
def send_set_size(self, size): self.__logger.info(__name__ + " sending size message {0}".format(size)) command = MessageFactory.create_set_size_message(size) self.send_message(command)