Пример #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
    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
 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
    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
 def has_linkonlychannel(self, server_id):
     try:
         channel = jsonstorage.get(server_id, Constants.linkonly_channel.fget())
         return True
     except Exception:
         return False
Пример #9
0
 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
 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
 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