def fill_sheet(player_discord_id, description, play_number, boss_tag, damage, play_option, play_miss): global _undo, _sheet_lock if player_discord_id not in _player_list: FileLogger.warn(f'Discord ID: {player_discord_id} not found in sheet') return False player_nickname = _player_list[player_discord_id] today = get_settlement_time_object() play_tag = f"{play_number}{'B' if play_option == '補' else 'A'}" missing_tag = '閃' if play_miss > 0 else '' body = { 'values': [[ today.strftime("%Y/%m/%d %H:%M:%S"), player_nickname, play_tag, damage, boss_tag, missing_tag ]] } play_day_offset = today - _start_date range_name = f'Day {play_day_offset.days + 1}-Log!A2:F' _sheet_lock.acquire() result = append_sheet(range_name, body) _sheet_lock.release() checkResult = True try: updates = result.get('updates') updated_range = updates.get('updatedRange') _undo['undostack'].append([updated_range, body, description]) _undo['redostack'] = [] except Exception as e: FileLogger.error(f'Fail to get result: {description}\n' + str(e)) checkResult = False return checkResult
def parse_args(user_auth, string): args = strQ2B(string).split() response = '' if not args: return response # Find command, otherwise consider it as spam cmd = get_cmd(args[0]) if cmd: args = args[1:] else: cmd = "spam" # Create the instance try: inst = getattr(globals()[cmd], cmd)() except KeyError: FileLogger.warn(f'No command found') except Exception: FileLogger.exception(f'Exception at {__file__} {__name__}') # Execute the function FileLogger.info(f"{user_auth['user_id']} call {cmd} with {args}") try: if len(args) == 1 and args[0] == 'help': response = inst.usage elif not inst.check_param(args): response = inst.usage elif not inst.check_auth(user_auth): response = inst.auth_warning else: response = inst.run(user_auth, args) except Exception: FileLogger.exception(f'Exception at {__file__} {__name__}') return response
def get_guild_channel_index(channel_id): if channel_id not in _guild_channel_list: FileLogger.warn('Unknown channel id') return return _guild_channel_list[channel_id]
def get_guild_channel_id(boss_index): if boss_index not in _guild_channel_list: FileLogger.warn('Unknown boss index') return return _guild_channel_list[boss_index]
def get_guild_member_nickname(user_id): if user_id not in _guild_member_list: FileLogger.warn('Unknown user id') return return _guild_member_list[user_id]