示例#1
0
    def on_message_create(self, event):
        self.initialize(event)

        if self.is_bot(event):
            return
        if self.has_inputchannel(self.get_server_id(event)):
            input_channel_id = jsonstorage.get(self.get_server_id(event),
                                               Constants.input_channel.fget())
            if event.raw_data['message']['channel_id'] != input_channel_id:
                return

        if self.has_outputchannel(self.get_server_id(event)):
            output_channel_id = int(
                jsonstorage.get(self.get_server_id(event),
                                Constants.output_channel.fget()))
            output_channel = self.bot.client.state.channels.get(
                output_channel_id)
            if self.is_valid_server_channel_id(output_channel_id):
                keywords = self.get_triggered_keywords(
                    self.get_server_id(event), event.message.content)
                for word in event.message.content.split(' '):
                    if word in keywords:
                        response = self.get_triggered_response(
                            self.get_server_id(event), word)
                        event.reply(response)
        else:
            event.reply("No outputchannel has been set")
示例#2
0
文件: linky.py 项目: 00stefan00/linky
    async def handle_url_input_channel(self, event):
        channel_id = event.raw_data['message']['channel_id']
        urls = self.get_urls(event.message.content)
        url_input_channel_id = jsonstorage.get(self.get_server_id(event), Constants.url_input_channel.fget())

        if channel_id != url_input_channel_id:
            return

        # Return if there are valid URLS found
        if len(urls) == 0:
            return

        # Check if output channel is set
        if not self.has_outputchannel(self.get_server_id(event)):
            event.reply("No outputchannel has been set")
            return

        url_output_channel_id = int(jsonstorage.get(self.get_server_id(event), Constants.url_output_channel.fget()))
        url_output_channel = self.bot.client.state.channels.get(url_output_channel_id)

        # Do not handle invalid channel
        if not self.is_valid_server_channel_id(url_output_channel_id):
            return

        for url in urls:
            if not self.url_is_blacklisted(self.get_server_id(event), url):
                url_output_channel.send_message(url)
示例#3
0
 def has_migration_version(self):
     try:
         version = jsonstorage.get(self.server_id,
                                   Constants.migration_version.fget())
         return True
     except Exception:
         return False
示例#4
0
 def has_outputchannel(self, server_id):
     try:
         channel = jsonstorage.get(server_id,
                                   Constants.output_channel.fget())
         return True
     except Exception:
         return False
示例#5
0
文件: linky.py 项目: 00stefan00/linky
 def is_admin_only_control(self, server_id):
     try:
         value = jsonstorage.get(server_id, Constants.adminonlycontrol.fget())
     except:
         value = None
     if value in ['True', 'true']:
         return True
     else:
         return False
示例#6
0
    def update_one(self):
        try:
            if self.has_storage_field("listen_channel"):
                old_input_value = jsonstorage.get(self.server_id,
                                                  "listen_channel")
                jsonstorage.add(self.server_id,
                                Constants.url_input_channel.fget(),
                                old_input_value)
                jsonstorage.remove(self.server_id, "listen_channel")

            if self.has_storage_field("response_channel"):
                old_output_value = jsonstorage.get(self.server_id,
                                                   "response_channel")
                jsonstorage.add(self.server_id,
                                Constants.url_output_channel.fget(),
                                old_output_value)
                jsonstorage.remove(self.server_id, "response_channel")
        except:
            # Todo, notify discord server of failed migration and advice reconfiguration
            pass
示例#7
0
文件: linky.py 项目: 00stefan00/linky
    async def handle_linkonly_channel(self, event):
        channel_id = event.raw_data['message']['channel_id'] 
        urls = self.get_urls(event.message.content)
        linkonly_channel_id = jsonstorage.get(self.get_server_id(event), Constants.linkonly_channel.fget())

        if channel_id != linkonly_channel_id:
            return

        # Return if there are URLS found or the message is from a moderator.
        if len(urls) > 0: #or self.is_msg_moderator(event):
            return

        # Wait a minute before deleting the message
        await asyncio.sleep(5)

        # Delete the non-link, non-moderator message since this is link-only channel
        event.message.delete()
示例#8
0
文件: linky.py 项目: 00stefan00/linky
 def has_linkonlychannel(self, server_id):
     try:
         channel = jsonstorage.get(server_id, Constants.linkonly_channel.fget())
         return True
     except Exception:
         return False
示例#9
0
文件: linky.py 项目: 00stefan00/linky
 def url_is_blacklisted(self, server_id, url):
     blacklist = jsonstorage.get(server_id, Constants.blacklisted_domains.fget()).items()
     for entry in blacklist:
         if self.get_stripped_domain(entry[1]) == self.get_stripped_domain(url):
             return True
     return False
示例#10
0
 def has_storage_field(self, key):
     try:
         value = jsonstorage.get(self.server_id, key)
         return True
     except Exception:
         return False
示例#11
0
 def command_set_showkeywords(self, event):
     if not self.is_allowed(event):
         return
     keywordlist = jsonstorage.get(self.get_server_id(event),
                                   Constants.keyword_list.fget())
     event.msg.reply("Keywords: {}".format(keywordlist.items()))
示例#12
0
 def get_triggered_response(self, server_id, key):
     keywordlist = jsonstorage.get(server_id, Constants.keyword_list.fget())
     return keywordlist[key]
示例#13
0
 def get_triggered_keywords(self, server_id, text):
     keywordlist = jsonstorage.get(server_id, Constants.keyword_list.fget())
     return [x for x in keywordlist]
示例#14
0
 def get_migration_version(self):
     return jsonstorage.get(self.server_id,
                            Constants.migration_version.fget())
示例#15
0
文件: linky.py 项目: 00stefan00/linky
 def has_blacklisted_domains(self, server_id):
     try:
         blacklist = jsonstorage.get(server_id, Constants.blacklisted_domains.fget())
         return True 
     except Exception:
         return False
示例#16
0
文件: linky.py 项目: 00stefan00/linky
 def command_set_domainblacklistshow(self, event):
     if not self.is_allowed(event):
         return
     blacklist = jsonstorage.get(self.get_server_id(event), Constants.blacklisted_domains.fget())
     event.msg.reply("Blacklist: {}".format(blacklist.items()))
示例#17
0
 def has_keywords(self, server_id):
     try:
         keylist = jsonstorage.get(server_id, Constants.keyword_list.fget())
         return True
     except Exception:
         return False