diff --git a/bot.py b/bot.py index 1ba207f..d079750 100644 --- a/bot.py +++ b/bot.py @@ -28,6 +28,238 @@ url_status = "Unknown" url = "https://oss-auth.blinklab.com/" stop_event = threading.Event() +error_codes = """ +20400X: Server under heavy load +204013: Try another credit card or contact your credit card provider +204015: Server under heavy load +204017: Wii Points Card invalid +204019-204041: Server under heavy load (during software download) +204038: Wireless interferences? +204042-204053: Server under heavy load +204700-204801: Server under heavy load +204901-204973: Try another credit card or contact your credit card provider +2056XX: ECS error (eCommerce SOAP) +2057XX: ETS error +2058XX: PAS error +2059XX: IAS error (Identity Authentication SOAP) +2064XX: IAS error (Identity Authentication SOAP) +2066XX: OSS error +205540: This software doesn't work in the vWii +205617: Wii Points card code invalid +205618: Wii Points card is for another country +205621: Unknown error (possibly ECS gift error?) +205623: Trial period for that title expired, you can't download that again +205625: ECS gift error +205626: Unable to send present (ECS gift error) +205627: You cannot buy DLC for a game you don't own +205642: Unknown error +205643: Unknown error +205644: Credit cards can't be used on this console. +205645: Issue with your DSi shop account? +205646: Unable to send present (ECS gift error) +205672: Wii Shop account mismatch +20570X: ETS Error +20580X: Wii Points Card error +205810: You don't have enough Wii Points / Error while redeeming your download ticket +205811: Wii Points card expired +205812-205814: The Wii Points card can not be used +205815: Wii Points Card was already used +205816: Some error with the Wii Points Card +205817: Server under heavy load +205818: This card number can only be used for a specific title, it is not a Wii Points Card. +205819: Wii Points Card code is invalid +205825: PAS_ERROR_CODE +205826: Server under heavy load +205829: Server under heavy load +205830: Wii Points Card code is invalid +205831: Wii Points Card is for another Country +205901: Wii number invalid! +205903: Unknown error +205906: Problem with your online account +205921-205925: Wii NAND corrupted +205928: Unknown error +205940-250941: Problems with your "Club-Nintendo"-account. It can't get connected with your shop account +250943: Problems with your "Club-Nintendo"-account. It can't get connected with your shop account +205942: Maintenance. Login not possible +205958: Unknown error +205968: IAS_BAD_DEVICE_CODE +205969: Server under heavy load +206112: The free title promotion has ended (ICR_END) +206401: Invalid characters in nick or password +206402-206403: Problems with your "Club-Nintendo"-account. It can't get connected with your shop account +206499: Maintenance. Login not possible +206601: OSS_ERROR_INVALID_PARAM. Triggered by B_24 in Wii Shop (Invalid parameter) +206602: Error while entering Wii Points Card code. Try again later. +206603: Unable to confirm credit card information +206604: Server under heavy load +206607: Error while retrieving the served content +206608: Error redeeming Wii Download Ticket +206610: Wii download ticket expired +206611: Wii download ticket invalid +206612: This Wii download ticket can't be used in your country +206613: No software available for this download ticket. May be caused by parental controls. +206650: Wrong PIN +206651: Mistake while entering the wii serial number +206652: Wrong PIN three times (parental controls) +206653: Nickname or password wrong +206660: No progress was made in the last operation +206661: Credit card type invalid +206662: Credit card number invalid +206663: An operation is in progress +206664: No security code was provided +206667: Wii download ticket invalid +206668: Happens when current points count + new points would exceed the wii points limit +206669: Wii Points card invalid +206670: Problem with your Wii Shop Account (invalid Wii number) +206671: Problem with your Wii Shop Account (invalid shop app - bad title ID) +206672: Problem with your Wii Shop Account (invalid shop app - no title info) +206673: Problem with your Wii Shop Account (invalid registration status) +206674: Problem with your Wii Shop Account (unexpected eclib error) +206699: Try again later +2067XX: Server under heavy load +208000: You have entered the wrong state ("Bundesland") +208001: Unable to process for credit cards (some kind of blacklist?) +208002: Billing address invalid +208003: Credit card number doesn't match card type +208004: three-digit security code invalid +208005: Mistake in credit card data. +208006: Card number invalid +208007: Expiration date invalid +208008: Postal code invalid +208009: Technical difficulties. +208010: Credit card could not get validated. Try again later. +208011: Credit card declined +208012: Credit card declined - no funds available +208013: Credit card declined - inactive +208014: Credit card expired +208015: Credit card code invalid +208016: Credit card number invalid +208017: Credit card limit reached +208018: Credit card invalid +208019: Postal / zip code invalid +208021: Refund is in progress +208022: Refund was already processed +208023: Refund error +208025: Empty security code +209XXX: Server connection timeout +209531: Web page not found (WS_ERROR_WWW_HTTP_ERR_NOT_FOUND) +209593: Access denied by Opera Wii Shop domain filter config +209620: Some JS files couldn't be loaded (CheckRegistered.jsp line ~100) +209622: SSL CA unknown / not included in channel +209631: Invalid SD Card +209632: The SD Card is inserted(?) +209633: The SD Card is not inserted +209634: Unknown SD Card cluster (not 32k) +209635: Incorrect SD Card alignment +209636: Incorrect SD Card Device +209637: The title's ticket is not present on the SD +209638: SDCARD_ERROR_ACCESS +209639: SDCARD_ERROR_CANCELLED (cancelBackupToSDCard successful?) +209640: SDCARD_ERROR_CONTENT_INVALID (Banner is not found) +209641: SDCARD_ERROR_MAXFD (?) +209642: The SD Card is "out of memory" +209643: The SD Card is corrupted (NAND_CORRUPT ERROR (Serious error)) +209644: SDCARD_ERROR_ECC_CRIT (?) +209645: SD Authentication error(?) +209646: Fatal error with the SD Card +209647: Unknown SD Card +209648: The SD Card is not inserted +209649: The SD Card is not supported +209650: SD Card File system is broken +209651: SD is write protected +209652: No space left in the SD +209653: Other SD error +209654: Unknown SD Error +209655: SDCARD_ERROR_WANT_OF_CAPACITY (SD full) +209656: SDCARD_ERROR_EXIST_CHECK_SOFT (title already present on SD) +209657: SDCARD_ERROR_EXCEPTION_STATE (Illegal statement and cancelBackupToSDCard error) +209658-209660: Unused +209661: EXIST_CHECK_SOFT_NAND +209662: errChannel +209663: errInodes +209664: SD Backup timeout in B-10 +209665: JournalFlag error in B-10 +209666: Available space error in B-09 on checking remain size +209667: Available space is not sufficient (NAND) +209800 - 209801: Connection timeout (also caused by missing shop.connecting) +220000: Connection failed +220001: Unknown protocol +220002: Out of memory +220003: Filtered URL +220101: Allocation error +220102: Unsupported file +220103: Empty file +220104: Invalid file +220105: Javascript error +220106: Plugin error +220201: Not found +220202: Connection refused +220301 - 220302: HTTP error code 100 - 101 +220303 - 220309: HTTP error code 200 - 206 +220310 - 220315: HTTP error code 300 - 305 +220316 - 220331: HTTP error code 400 - 415 +220332 - 220337: HTTP error code 500 - 505 +""" + +def parse_error_codes(error_codes): + exact_codes = {} + wildcard_codes = {} + + for line in error_codes.strip().split('\n'): + code, message = line.split(':', 1) + code = code.strip() + message = message.strip() + + if 'X' in code: + wildcard_codes[code] = message + elif '-' in code: + # Handle ranges by expanding them into individual codes + ranges = code.split(',') + for r in ranges: + r = r.strip() # Clean up any extra spaces + if '-' in r: # Ensure it is a valid range + start, end = r.split('-') + start = start.strip() + end = end.strip() + # Generate all codes in the range + for num in range(int(start), int(end) + 1): + exact_codes[str(num)] = message + else: + # If it's not a valid range, treat it as an exact code + exact_codes[r] = message + else: + exact_codes[code] = message + + return exact_codes, wildcard_codes + +def create_database(db_name='error_codes.db'): + # Connect to the SQLite database (or create it) + conn = sqlite3.connect(db_name) + cursor = conn.cursor() + + # Create a table for error codes + cursor.execute(''' + CREATE TABLE IF NOT EXISTS error_codes ( + code TEXT PRIMARY KEY, + message TEXT + ) + ''') + + # Parse the error codes + exact_codes, wildcard_codes = parse_error_codes(error_codes) + + # Insert exact codes into the database + for code, message in exact_codes.items(): + cursor.execute('INSERT OR IGNORE INTO error_codes (code, message) VALUES (?, ?)', (code, message)) + + # Insert wildcard codes into the database + for code, message in wildcard_codes.items(): + cursor.execute('INSERT OR IGNORE INTO error_codes (code, message) VALUES (?, ?)', (code, message)) + + # Commit changes and close the connection + conn.commit() + conn.close() + def matches_wildcard(code, wildcard_code): pattern = wildcard_code.replace('X', '[0-9]') return re.fullmatch(pattern, str(code)) is not None @@ -89,5 +321,7 @@ async def geterror(ctx, errorcode: commands.Range[int, 204000, 250943]): except ValueError: errormessage = "Error Code was not found." await ctx.send(errormessage) - + +os.remove("error_codes.db") +create_database() bot.run(token) \ No newline at end of file