async def on_ready():
  print('Logged in as')
  print(client.user.name)
  print(client.user.id)
  print('-----')
  client_game = Game(name=config.game_played)
  await client.change_presence(activity = client_game)
  globals_file.init(client, config)
  globals_file.log_information("Bot Started")
示例#2
0
async def send_message(message, message_to_send, force_author=False):
    try:
        message_destination = determine_destination(message, force_author)
        await message_destination.send(message_to_send)
    except:
        print('Failed to send message')
        print(sys.exc_info()[0])
        error_message = "Failed to send message. %s" % sys.exc_info()[0]
        globals_file.log_information(error_message)
async def handle(member):
    try:
        if (globals_file.welcome_message):
            if (member.dm_channel == None):
                await member.create_dm()
            dm_channel = member.dm_channel
            welcome_string = globals_file.welcome_message
            await dm_channel.send(welcome_string)
    except:
        log_message = "Error: %s" % sys.exc_info()[0]
        globals_file.log_information(log_message)
示例#4
0
async def delete_message(message):
    try:
        await message.channel.fetch_message(message.id)
        if (message.channel.name and globals_file.commands_config
                and message.channel.id
                == globals_file.commands_config['commands_channel'].id):
            return 0
        if (message.channel.name):
            await message.delete()
    except:
        print('Failed to delete message')
        print(sys.exc_info()[0])
        error_message = "Failed to delete message. %s" % sys.exc_info()[0]
        globals_file.log_information(error_message)
async def apply(message):
    if (globals_file.tps_booster
            and globals_file.tps_booster['waiting_on_player_list'] and
            globals_file.tps_booster['waiting_on_player_list']['is_waiting']):
        if (globals_file.tps_booster['waiting_on_player_list']['is_waiting']):
            time_delta = datetime.datetime.now() - globals_file.tps_booster[
                'waiting_on_player_list']['time_started']
            if ((time_delta > datetime.timedelta(minutes=5))):
                globals_file.tps_booster['waiting_on_player_list'][
                    'is_waiting'] = False
                globals_file.tps_booster['waiting_on_player_list'][
                    'time_started'] = None
                log_message = "Time expired for getting player list. tps_booster: %s" % globals_file.tps_booster
                globals_file.log_information(log_message)
                return 0
    matches = re.search("(There are \d+ of a max \d+ players online: .+)",
                        message.content)
    if (matches):
        globals_file.tps_booster['waiting_on_player_list'] = False
        players = matches.groups()[0].split(': ')[1].split(', ')
        globals_file.tps_booster['waiting_on_player_status'] = {}
        if (players):
            globals_file.tps_booster['waiting_on_player_status'][
                'players'] = {}
            globals_file.tps_booster['waiting_on_player_status'][
                'is_waiting'] = True
            globals_file.tps_booster['waiting_on_player_status'][
                'time_started'] = datetime.datetime.now()
            log_message = "Started waiting on afk status. tps_booster: %s" % globals_file.tps_booster
            globals_file.log_information(log_message)
        else:
            globals_file.tps_booster['waiting_on_player_status'][
                'players'] = None
            globals_file.tps_booster['waiting_on_player_status'][
                'is_waiting'] = False
            globals_file.tps_booster['waiting_on_player_status'][
                'time_started'] = None
            log_message = "Not players afk. tps_booster: %s" % globals_file.tps_booster
            globals_file.log_information(log_message)
            return 0
        for player in players:
            globals_file.tps_booster['waiting_on_player_status']['players'][
                player] = {}
            globals_file.tps_booster['waiting_on_player_status']['players'][
                player]['waiting'] = True
            globals_file.tps_booster['waiting_on_player_status']['players'][
                player]['start_time'] = datetime.datetime.now()
            globals_file.tps_booster['waiting_on_player_status']['players'][
                player]['is_afk'] = False
            log_message = "Started waiting on player specific afk status. tps_booster: %s" % globals_file.tps_booster
            globals_file.log_information(log_message)
            time.sleep(1)
            await globals_file.console_logs_channel.send(
                u'afkplus player %s' % player.replace('\\', ''))
async def handle(before, after):
    try:
        if (globals_file.console_logs_channel and globals_file.tps_booster
                and globals_file.moderation):
            if (before.id == globals_file.console_logs_channel.id
                    and after.id == globals_file.console_logs_channel.id):
                tps = float(after.topic.split('|')[0].split(' ')[1])
                if (tps < globals_file.tps_booster['minimum_tps']):
                    await globals_file.moderation['moderation_channel'].send(
                        "TPS is %s. Starting process to kick afk members." %
                        tps)
                    globals_file.tps_booster['waiting_on_player_list'] = {
                        "is_waiting": True,
                        "time_started": datetime.datetime.now()
                    }
                    time.sleep(1)
                    await globals_file.console_logs_channel.send('list')
    except:
        log_message = "Error: %s" % sys.exc_info()[0]
        globals_file.log_information(log_message)
async def on_message(message):
  if(not message.author == client.user and globals_file.console_logs_channel and message.channel.id == globals_file.console_logs_channel.id and globals_file.tps_booster and globals_file.tps_booster['waiting_on_player_list'] and globals_file.tps_booster['waiting_on_player_list']['is_waiting']):
    log_message = "Setting playerlist\ntps_booster: %s" % globals_file.tps_booster
    globals_file.log_information(log_message)
    await set_playerlist.apply(message)

  if(not message.author == client.user and globals_file.console_logs_channel and message.channel.id == globals_file.console_logs_channel.id and globals_file.tps_booster and globals_file.tps_booster['waiting_on_player_status'] and globals_file.tps_booster['waiting_on_player_status']['is_waiting']):
    log_message = "Handling afk statuses\ntps_booster: %s" % globals_file.tps_booster
    globals_file.log_information(log_message)
    await handle_afk_status.apply(message)

  # Ignore everything in the logs channel
  if(globals_file.logs):
    if(message.channel.id == globals_file.logs['logs_channel'].id or message.channel.id in globals_file.logs['ignored_channels']):
      return 0
  
    # Ignore any private messages or own messages for logs
    if(message.author != client.user and globals_file.logs['log_all_messages'] and message.channel.name):
      author = message.author.nick if message.author.nick else message.author.name
      log_message = ('%s said \"%s\" in %s#%s at %s') % (author, message.clean_content, message.guild.name, message.channel.name, message.created_at.strftime("%m/%d/%Y, %H:%M:%S"))
      await globals_file.logs['logs_channel'].send(log_message)

  

  # Ignore commands outside of commands channel or in ignored channels if set
  if(globals_file.commands_config):
    if(globals_file.commands_config['only_commands_here'] and message.channel.id != globals_file.commands_config['commands_channel'].id):
      return 0
    if(message.channel.id in globals_file.commands_config['ignored_channels']):
      return 0

  # listen to command attempt
  if(message.content.startswith('!')):
    log_message = "Command detected. messageContent:%s, messageAuthor:%s" % (message.content, message.author)
    globals_file.log_information(log_message)
    command_body = message.content[1:].lower()

    if(version.is_triggered(command_body)):
      await version.command(message, current_version)

    elif(status.is_triggered(command_body)):
      await status.command(message)

    elif(ping.is_triggered(command_body)):
      await ping.command(message)

    elif(join_message_test.is_triggered(command_body)):
      await join_message_test.command(message)

    elif(help.is_triggered(command_body)):
      await help.command(message)
async def apply(message):
    try:
        if (globals_file.tps_booster['waiting_on_player_status']
            ['time_started']):
            now = datetime.datetime.now()
            time_delta = now - globals_file.tps_booster[
                'waiting_on_player_status']['time_started']
            if (time_delta > datetime.timedelta(minutes=5)):
                globals_file.tps_booster['waiting_on_player_status'][
                    'time_started'] = None
                log_message = "Time expired for handling afk status. Time delta:%s, tps_booster:%s" % (
                    time_delta, globals_file.tps_booster)
                globals_file.log_information(log_message)
                return 0

        not_afk_matches = re.search("(]\s.+( is not AFK))", message.content)
        afk_matches = re.search("(]\s.+( has been AFK since))",
                                message.content)
        if (not_afk_matches):
            player = not_afk_matches.groups()[0].split(' ')[1]
            if (globals_file.tps_booster['waiting_on_player_status']['players']
                [player]):
                if (globals_file.tps_booster['waiting_on_player_status']
                    ['players'][player]['waiting']):
                    globals_file.tps_booster['waiting_on_player_status'][
                        'players'][player]['waiting'] = False
                    globals_file.tps_booster['waiting_on_player_status'][
                        'players'][player]['is_afk'] = False
                    log_message = "Updated tps_booster: %s" % globals_file.tps_booster
                    globals_file.log_information(log_message)
        elif (afk_matches):
            player = afk_matches.groups()[0].split(' ')[1]
            if (globals_file.tps_booster['waiting_on_player_status']['players']
                [player]):
                if (globals_file.tps_booster['waiting_on_player_status']
                    ['players'][player]['waiting']):
                    globals_file.tps_booster['waiting_on_player_status'][
                        'players'][player]['waiting'] = False
                    globals_file.tps_booster['waiting_on_player_status'][
                        'players'][player]['is_afk'] = True
                    await globals_file.moderation['moderation_channel'].send(
                        "Kicking %s due to being AFK during low TPS" % player)
                    await globals_file.console_logs_channel.send(
                        u"kick %s %s" % (player.replace(
                            '\\', ''), globals_file.tps_booster['kick_reason'])
                    )
                    log_message = "Kicked afk player: %s, tps_booster: %s" % (
                        player.replace('\\', ''), globals_file.tps_booster)
                    globals_file.log_information(log_message)

        for player in globals_file.tps_booster['waiting_on_player_status'][
                'players']:
            if globals_file.tps_booster['waiting_on_player_status']['players'][
                    player]['waiting']:
                return 0
        globals_file.tps_booster['waiting_on_player_status'][
            'is_waiting'] = False
        log_message = "No longer waiting to handle afk status: %s" % globals_file.tps_booster
        globals_file.log_information(log_message)
    except:
        log_message = "Error: %s" % sys.exc_info()[0]
        globals_file.log_information(log_message)
async def on_guild_channel_update(before, after):
  log_message = "Guild Channel Update Event\nBefore: name:%s, id:%d, topic:%s\nAfter: name:%s, id:%d, topic:%s" % (before.name, before.id, before.topic, after.name, after.id, after.topic)
  globals_file.log_information(log_message)
  await guild_channel_updated.handle(before, after)
async def on_member_ban(guild, user):
  log_message = "Guild Member Ban Event\nGuild: name:%s\nUser: name:%s, id:%d" % (guild.name, user.name, user.id)
  globals_file.log_information(log_message)
  await member_banned.handle(guild, user)
async def on_member_remove(member):
  log_message = "Member Remove Event\nMember: name:%s, nick:%s. id:%d" % (member.name, member.nick, member.id)
  globals_file.log_information(log_message)
  await member_left.handle(member)
async def on_member_join(member):
  log_message = "Member Joined\nMember: name:%s, nick:%s, id:%d" % (member.name, member.nick, member.id)
  globals_file.log_information(log_message)
  await member_joined.handle(member)