commit dee4702e08da229b97b02ad0db6be108581d099d Author: JoshyPoo Date: Thu Aug 7 21:56:29 2025 -0500 initial commit diff --git a/.env b/.env new file mode 100644 index 0000000..17a7843 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +DISCORD_TOKEN=MTQwMjEyMTQ5MjAyMzQ4MDM3MQ.GP-E67.ALfqo9KDV8zNz6aollUWPsLq-cSIuuG0yzIijw \ No newline at end of file diff --git a/Main.py b/Main.py new file mode 100644 index 0000000..ab5ff6d --- /dev/null +++ b/Main.py @@ -0,0 +1,153 @@ +import discord +from discord.ext import commands +import logging +from dotenv import load_dotenv +from pathlib import Path +import os +import sqlite_utils + +# Show the path we expect to load +# Explicitly find the .env file in the same directory as the script + +env_path = Path(__file__).resolve().parent / ".env" +print(f"Looking for .env at: {env_path}") + + +# Load the env file +load_dotenv(dotenv_path=env_path) + +# Print token (or None) +token = os.getenv("DISCORD_TOKEN") +print(f"Loaded token Succesfully") + +if token is None: + raise RuntimeError(".env file not loaded or DISCORD_TOKEN not set.") + +token = os.getenv("DISCORD_TOKEN") + +handler = logging.FileHandler(filename='discord.log', encoding='utf-8', mode='w') +intents = discord.Intents.default() +intents.message_content = True +intents.members = True + +bot = commands.Bot(command_prefix='!', intents=intents) + +@bot.event +async def on_ready(): + print(f"{bot.user.name} is ready") + +#Imports users from Discord to users table in dbot.db + for guild in bot.guilds: + print(f"Importing members from guild: {guild.name} ({guild.id})") + async for member in guild.fetch_members(limit=None): + add_user_to_db(member) + print(f"All members have been added/updated in the database.") + +@bot.event +async def on_member_join(member): + await member.send(f"Welcome to the server {member.name}") + +@bot.event +async def on_message(message): + if message.author == bot.user: + return + + if "shit" in message.content.lower(): + #await message.delete() + await message.channel.send(f"{message.author.mention} - bro thats a bad worddddd!") + + await bot.process_commands(message) + +@bot.command() +async def hello(ctx): + await ctx.send(f"Hello{ctx.author.mention}!") + +##############################Points System Setup################################################## + +#Initialize SQLite database +db = sqlite_utils.Database("dbot.db") + +# Creates the table if it does not exist (should only do this part once) +if "users" not in db.table_names(): + db["users"].create( + {"id": str, #Discord ID + "name": str, # ACTUAL Discord name + "discriminator": str, #4-digits after the username + "displayName": str, # Name that appears in the server + "points": int, #Points lol + "title": str, #Field that will bestow a title upon the user depending on amount of points/level + }, + pk="id" + ) + +#Sets Variable users_table as the newly created (or already existing) database +usersTable = db["users"] + + +#Checks to see if the User has an ID in the table, if not it gets added, ALSO updates the displayName/discrimnator if they change +def add_user_to_db(member: discord.Member): + userID = str(member.id) + try: + existing = usersTable.get(userID) + except KeyError: + existing = None + + if not existing: + # Insert new user + usersTable.insert( + { + "id": userID, + "name": member.name, + "discriminator": member.discriminator, + "displayName": member.display_name, + "points": 0, + "title": "" + }, + pk="id", + ignore=True + ) + else: + # Update if name or discriminator changed + updated = False + if existing.get("displayName") != member.display_name: + existing["displayName"] = member.display_name + updated = True + if existing.get("discriminator") != member.discriminator: + existing["discriminator"] = member.discriminator + updated = True + if updated: + usersTable.update(userID, existing) + + + +#Import all members from ALL servers +#@bot.event +#async def on_ready(): + # print(f"{bot.user.name} is ready") + + # for guild in bot.guilds: + # print(f"Importing members from guild: {guild.name} ({guild.id})") + # async for member in guild.members(limit=None): + # add_user_to_db(member) + # print(f"All members have been added/updated in the database.") + + +#Creates function for bot to use +def getPoints(userID: int) -> int: + userID = str(userID) + try: + row = usersTable.get(userID) + return row["points"] + except KeyError: + return 0 + +#Bot Command to view points +@bot.command() +async def points(ctx, member: discord.Member = None): + member = member or ctx.author + total = getPoints(member.id) + await ctx.send(f"{member.mention} has {total} points.") + + + +bot.run(token, log_handler=handler, log_level=logging.DEBUG) \ No newline at end of file diff --git a/dbot.db b/dbot.db new file mode 100644 index 0000000..7fb515e Binary files /dev/null and b/dbot.db differ diff --git a/discord.log b/discord.log new file mode 100644 index 0000000..52f506a --- /dev/null +++ b/discord.log @@ -0,0 +1,51 @@ +[2025-08-07 21:36:16] [INFO ] discord.client: logging in using static token +[2025-08-07 21:36:16] [DEBUG ] discord.http: GET https://discord.com/api/v10/users/@me with None has returned 200 +[2025-08-07 21:36:16] [DEBUG ] discord.http: GET /users/@me has found its initial rate limit bucket hash (78bb8553d9352a5a2f89f9def401287a). +[2025-08-07 21:36:16] [DEBUG ] discord.http: GET https://discord.com/api/v10/users/@me has received {'id': '1402121492023480371', 'username': 'TheTip', 'avatar': 'cf9a72adc0565447498427676448a23f', 'discriminator': '5942', 'public_flags': 0, 'flags': 0, 'bot': True, 'banner': None, 'accent_color': None, 'global_name': None, 'avatar_decoration_data': None, 'collectibles': None, 'display_name_styles': None, 'banner_color': None, 'clan': None, 'primary_guild': None, 'mfa_enabled': True, 'locale': 'en-US', 'premium_type': 0, 'email': None, 'verified': True, 'bio': ''} +[2025-08-07 21:36:17] [DEBUG ] discord.http: GET https://discord.com/api/v10/oauth2/applications/@me with None has returned 200 +[2025-08-07 21:36:17] [DEBUG ] discord.http: GET /oauth2/applications/@me has found its initial rate limit bucket hash (d28a133af187e91d71d96a223467ce49). +[2025-08-07 21:36:17] [DEBUG ] discord.http: GET https://discord.com/api/v10/oauth2/applications/@me has received {'id': '1402121492023480371', 'name': 'TheTip', 'icon': None, 'description': '', 'type': None, 'bot': {'id': '1402121492023480371', 'username': 'TheTip', 'avatar': 'cf9a72adc0565447498427676448a23f', 'discriminator': '5942', 'public_flags': 0, 'flags': 0, 'bot': True, 'banner': None, 'accent_color': None, 'global_name': None, 'avatar_decoration_data': None, 'collectibles': None, 'display_name_styles': None, 'banner_color': None, 'clan': None, 'primary_guild': None}, 'summary': '', 'is_monetized': False, 'is_verified': False, 'is_discoverable': False, 'bot_public': True, 'bot_require_code_grant': False, 'install_params': {'scopes': ['applications.commands'], 'permissions': '0'}, 'integration_types_config': {'0': {'oauth2_install_params': {'scopes': ['applications.commands'], 'permissions': '0'}}, '1': {'oauth2_install_params': {'scopes': ['applications.commands'], 'permissions': '0'}}}, 'verify_key': '50832e70e18b92f9e03193bdd7af5f770b81309adab3e3deaa250a4bc8e133bc', 'flags': 557312, 'hook': True, 'storefront_available': False, 'redirect_uris': [], 'interactions_endpoint_url': None, 'role_connections_verification_url': None, 'owner': {'id': '601550347164581950', 'username': 'ujtisgrumpy', 'avatar': '18ba400e8c11c9136e7342598629e3ce', 'discriminator': '0', 'public_flags': 0, 'flags': 0, 'banner': None, 'accent_color': None, 'global_name': 'ujt', 'avatar_decoration_data': None, 'collectibles': None, 'display_name_styles': None, 'banner_color': None, 'clan': None, 'primary_guild': None}, 'approximate_guild_count': 1, 'approximate_user_install_count': 0, 'approximate_user_authorization_count': 0, 'interactions_event_types': [], 'interactions_version': 1, 'explicit_content_filter': 0, 'rpc_application_state': 0, 'store_application_state': 1, 'verification_state': 1, 'integration_public': True, 'integration_require_code_grant': False, 'discoverability_state': 1, 'discovery_eligibility_flags': 2272, 'monetization_state': 1, 'verification_eligibility_flags': 123804, 'monetization_eligibility_flags': 247524, 'team': None, 'internal_guild_restriction': 2, 'approved_consoles': []} +[2025-08-07 21:36:17] [DEBUG ] discord.gateway: Created websocket connected to wss://gateway.discord.gg/ +[2025-08-07 21:36:17] [DEBUG ] discord.gateway: For Shard ID None: WebSocket Event: {'t': None, 's': None, 'op': 10, 'd': {'heartbeat_interval': 41250, '_trace': ['["gateway-prd-arm-us-east1-b-h7pl",{"micros":0.0}]']}} +[2025-08-07 21:36:17] [DEBUG ] discord.gateway: Shard ID None has sent the IDENTIFY payload. +[2025-08-07 21:36:17] [DEBUG ] discord.gateway: For Shard ID None: WebSocket Event: {'t': None, 's': None, 'op': 11, 'd': None} +[2025-08-07 21:36:17] [DEBUG ] discord.gateway: For Shard ID None: WebSocket Event: {'t': 'READY', 's': 1, 'op': 0, 'd': {'v': 10, 'user_settings': {}, 'user': {'verified': True, 'username': 'TheTip', 'primary_guild': None, 'mfa_enabled': True, 'id': '1402121492023480371', 'global_name': None, 'flags': 0, 'email': None, 'discriminator': '5942', 'clan': None, 'bot': True, 'avatar': 'cf9a72adc0565447498427676448a23f'}, 'session_type': 'normal', 'session_id': '7645a274e3f0a90301493dae09cc75d0', 'resume_gateway_url': 'wss://gateway-us-east1-b.discord.gg', 'relationships': [], 'private_channels': [], 'presences': [], 'guilds': [{'unavailable': True, 'id': '601552635891286056'}, {'unavailable': True, 'id': '1395871513223233686'}], 'guild_join_requests': [], 'geo_ordered_rtc_regions': ['us-south', 'atlanta', 'us-central', 'us-west', 'us-east'], 'game_relationships': [], 'auth': {}, 'application': {'id': '1402121492023480371', 'flags': 557312}, '_trace': ['["gateway-prd-arm-us-east1-b-h7pl",{"micros":219494,"calls":["id_created",{"micros":378,"calls":[]},"session_lookup_time",{"micros":6557,"calls":[]},"session_lookup_finished",{"micros":10,"calls":[]},"discord-sessions-prd-2-46",{"micros":212209,"calls":["start_session",{"micros":181358,"calls":["discord-api-rpc-79b4cf9678-8qz9k",{"micros":117783,"calls":["get_user",{"micros":24886},"get_guilds",{"micros":4568},"send_scheduled_deletion_message",{"micros":9},"guild_join_requests",{"micros":1},"authorized_ip_coro",{"micros":11},"pending_payments",{"micros":17181},"apex_experiments",{"micros":39154},"user_activities",{"micros":2},"played_application_ids",{"micros":4}]}]},"starting_guild_connect",{"micros":33,"calls":[]},"presence_started",{"micros":19750,"calls":[]},"guilds_started",{"micros":107,"calls":[]},"lobbies_started",{"micros":1,"calls":[]},"guilds_connect",{"micros":1,"calls":[]},"presence_connect",{"micros":10943,"calls":[]},"connect_finished",{"micros":10947,"calls":[]},"build_ready",{"micros":11,"calls":[]},"clean_ready",{"micros":1,"calls":[]},"optimize_ready",{"micros":0,"calls":[]},"split_ready",{"micros":0,"calls":[]}]}]}]']}} +[2025-08-07 21:36:17] [DEBUG ] discord.client: Dispatching event socket_event_type +[2025-08-07 21:36:17] [INFO ] discord.gateway: Shard ID None has connected to Gateway (Session ID: 7645a274e3f0a90301493dae09cc75d0). +[2025-08-07 21:36:17] [DEBUG ] discord.client: Dispatching event connect +[2025-08-07 21:36:17] [DEBUG ] discord.gateway: For Shard ID None: WebSocket Event: {'t': 'GUILD_CREATE', 's': 2, 'op': 0, 'd': {'mfa_level': 0, 'afk_channel_id': None, 'latest_onboarding_question_id': None, 'embedded_activities': [], 'guild_scheduled_events': [], 'icon': None, 'preferred_locale': 'en-US', 'voice_states': [{'user_id': '316811666052349953', 'suppress': False, 'session_id': 'b1487c29f316b895ecdbf0a0f283f040', 'self_video': False, 'self_mute': False, 'self_deaf': False, 'request_to_speak_timestamp': None, 'mute': False, 'discoverable': True, 'deaf': False, 'channel_id': '1395871513223233690'}, {'user_id': '523000914781667329', 'suppress': False, 'session_id': 'e16da921373ac3609484d9c18c0c7566', 'self_video': False, 'self_stream': True, 'self_mute': False, 'self_deaf': False, 'request_to_speak_timestamp': None, 'mute': False, 'discoverable': True, 'deaf': False, 'channel_id': '1395871513223233690'}, {'user_id': '601550347164581950', 'suppress': False, 'session_id': 'bb0ca8359f214fe78c2f672e591e3cb7', 'self_video': False, 'self_mute': False, 'self_deaf': False, 'request_to_speak_timestamp': None, 'mute': False, 'discoverable': True, 'deaf': False, 'channel_id': '1395871513223233690'}], 'profile': None, 'moderator_reporting': None, 'premium_progress_bar_enabled': False, 'system_channel_flags': 0, 'max_video_channel_users': 25, 'safety_alerts_channel_id': None, 'id': '1395871513223233686', 'name': 'Byte Bandits', 'inventory_settings': None, 'public_updates_channel_id': None, 'threads': [], 'premium_subscription_count': 0, 'stickers': [], 'soundboard_sounds': [], 'home_header': None, 'system_channel_id': '1395871513223233689', 'splash': None, 'stage_instances': [], 'afk_timeout': 300, 'owner_configured_content_level': 0, 'verification_level': 0, 'unavailable': False, 'description': '', 'owner_id': '316811666052349953', 'max_members': 25000000, 'nsfw': False, 'members': [{'user': {'username': 'ujtisgrumpy', 'public_flags': 0, 'primary_guild': None, 'id': '601550347164581950', 'global_name': 'ujt', 'display_name_styles': None, 'display_name': 'ujt', 'discriminator': '0', 'collectibles': None, 'bot': False, 'avatar_decoration_data': None, 'avatar': '18ba400e8c11c9136e7342598629e3ce'}, 'roles': ['1402697942162477097'], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-07-23T21:19:52.580000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}, {'user': {'username': 'platt53', 'public_flags': 0, 'primary_guild': None, 'id': '523000914781667329', 'global_name': 'Platt53', 'display_name_styles': None, 'display_name': 'Platt53', 'discriminator': '0', 'collectibles': None, 'bot': False, 'avatar_decoration_data': None, 'avatar': 'ceb7a94cd2b261a89633d2ca891e63e6'}, 'roles': ['1402697942162477097'], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-07-23T21:04:29.572000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}, {'user': {'username': 'forcevader3113', 'public_flags': 0, 'primary_guild': None, 'id': '316811666052349953', 'global_name': 'Forcevader3113', 'display_name_styles': None, 'display_name': 'Forcevader3113', 'discriminator': '0', 'collectibles': None, 'bot': False, 'avatar_decoration_data': None, 'avatar': '06e596b49194bf3c9924587a63287f39'}, 'roles': ['1402697942162477097'], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-07-18T20:55:02.817000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}, {'user': {'username': 'TheTip', 'public_flags': 0, 'primary_guild': None, 'id': '1402121492023480371', 'global_name': None, 'display_name_styles': None, 'display_name': None, 'discriminator': '5942', 'collectibles': None, 'bot': True, 'avatar_decoration_data': None, 'avatar': 'cf9a72adc0565447498427676448a23f'}, 'roles': ['1403203726423883912'], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-08-08T02:30:38.809057+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}, {'user': {'username': 'forcevader3113', 'public_flags': 0, 'primary_guild': None, 'id': '316811666052349953', 'global_name': 'Forcevader3113', 'display_name_styles': None, 'display_name': 'Forcevader3113', 'discriminator': '0', 'collectibles': None, 'bot': False, 'avatar_decoration_data': None, 'avatar': '06e596b49194bf3c9924587a63287f39'}, 'roles': ['1402697942162477097'], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-07-18T20:55:02.817000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}, {'user': {'username': 'platt53', 'public_flags': 0, 'primary_guild': None, 'id': '523000914781667329', 'global_name': 'Platt53', 'display_name_styles': None, 'display_name': 'Platt53', 'discriminator': '0', 'collectibles': None, 'bot': False, 'avatar_decoration_data': None, 'avatar': 'ceb7a94cd2b261a89633d2ca891e63e6'}, 'roles': ['1402697942162477097'], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-07-23T21:04:29.572000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}, {'user': {'username': 'ujtisgrumpy', 'public_flags': 0, 'primary_guild': None, 'id': '601550347164581950', 'global_name': 'ujt', 'display_name_styles': None, 'display_name': 'ujt', 'discriminator': '0', 'collectibles': None, 'bot': False, 'avatar_decoration_data': None, 'avatar': '18ba400e8c11c9136e7342598629e3ce'}, 'roles': ['1402697942162477097'], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-07-23T21:19:52.580000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}], 'roles': [{'version': 1752872102865, 'unicode_emoji': None, 'tags': {}, 'position': 0, 'permissions': '2248473465835073', 'name': '@everyone', 'mentionable': False, 'managed': False, 'id': '1395871513223233686', 'icon': None, 'hoist': False, 'flags': 0, 'colors': {'tertiary_color': None, 'secondary_color': None, 'primary_color': 0}, 'color': 0}, {'version': 1753293717853, 'unicode_emoji': None, 'tags': {'bot_id': '1397636084808155187'}, 'position': 1, 'permissions': '8', 'name': 'n8n', 'mentionable': False, 'managed': True, 'id': '1397639894897262674', 'icon': None, 'hoist': False, 'flags': 0, 'colors': {'tertiary_color': None, 'secondary_color': None, 'primary_color': 0}, 'color': 0}, {'version': 1754499667620, 'unicode_emoji': None, 'tags': {}, 'position': 1, 'permissions': '1721826618638327', 'name': 'Admins', 'mentionable': False, 'managed': False, 'id': '1402697942162477097', 'icon': None, 'hoist': False, 'flags': 0, 'colors': {'tertiary_color': None, 'secondary_color': None, 'primary_color': 16711680}, 'color': 16711680}, {'version': 1754620238726, 'unicode_emoji': None, 'tags': {'bot_id': '1402121492023480371'}, 'position': 1, 'permissions': '8', 'name': 'TheTip', 'mentionable': False, 'managed': True, 'id': '1403203726423883912', 'icon': None, 'hoist': False, 'flags': 0, 'colors': {'tertiary_color': None, 'secondary_color': None, 'primary_color': 0}, 'color': 0}], 'large': False, 'lazy': True, 'discovery_splash': None, 'premium_tier': 0, 'max_stage_video_channel_users': 50, 'joined_at': '2025-08-08T02:30:38.809057+00:00', 'application_command_counts': {}, 'region': 'deprecated', 'channels': [{'version': 1752872102871, 'type': 4, 'position': 0, 'permission_overwrites': [], 'name': 'Text Channels', 'id': '1395871513223233687', 'flags': 0}, {'version': 1752872102874, 'type': 4, 'position': 0, 'permission_overwrites': [], 'name': 'Voice Channels', 'id': '1395871513223233688', 'flags': 0}, {'version': 1752872102889, 'type': 0, 'topic': None, 'rate_limit_per_user': 0, 'position': 0, 'permission_overwrites': [], 'parent_id': '1395871513223233687', 'name': 'general', 'last_message_id': '1403205024577753088', 'id': '1395871513223233689', 'icon_emoji': {'name': '👋', 'id': None}, 'flags': 0}, {'version': 1752872102897, 'user_limit': 0, 'type': 2, 'rtc_region': None, 'rate_limit_per_user': 0, 'position': 0, 'permission_overwrites': [], 'parent_id': '1395871513223233688', 'name': 'General', 'last_message_id': None, 'id': '1395871513223233690', 'icon_emoji': {'name': '🎙', 'id': None}, 'flags': 0, 'bitrate': 64000}, {'version': 1752872120692, 'type': 0, 'topic': None, 'rate_limit_per_user': 0, 'position': 1, 'permission_overwrites': [], 'parent_id': '1395871513223233687', 'name': 'notifications', 'last_message_id': '1403184305257054419', 'id': '1395871588276244740', 'flags': 0}, {'version': 1754620267876, 'type': 0, 'topic': None, 'rate_limit_per_user': 0, 'position': 2, 'permission_overwrites': [], 'parent_id': '1395871513223233687', 'nsfw': False, 'name': 'bot-commands', 'last_message_id': None, 'id': '1403203849010810920', 'flags': 0}], 'premium_features': None, 'explicit_content_filter': 0, 'rules_channel_id': None, 'activity_instances': [], 'emojis': [], 'application_id': None, 'member_count': 6, 'features': [], 'incidents_data': None, 'banner': None, 'vanity_url_code': None, 'default_message_notifications': 0, 'presences': [], 'hub_type': None, 'version': 1754619063282, 'nsfw_level': 0}} +[2025-08-07 21:36:17] [DEBUG ] discord.client: Dispatching event socket_event_type +[2025-08-07 21:36:17] [DEBUG ] discord.gateway: For Shard ID None: WebSocket Event: {'t': 'GUILD_CREATE', 's': 3, 'op': 0, 'd': {'mfa_level': 0, 'afk_channel_id': None, 'latest_onboarding_question_id': None, 'embedded_activities': [], 'guild_scheduled_events': [], 'icon': None, 'preferred_locale': 'en-US', 'voice_states': [], 'profile': None, 'moderator_reporting': None, 'premium_progress_bar_enabled': False, 'system_channel_flags': 0, 'max_video_channel_users': 25, 'safety_alerts_channel_id': None, 'id': '601552635891286056', 'name': 'ihopeitworks', 'inventory_settings': None, 'public_updates_channel_id': None, 'threads': [], 'premium_subscription_count': 0, 'stickers': [], 'soundboard_sounds': [], 'home_header': None, 'system_channel_id': '601552636390670338', 'splash': None, 'stage_instances': [], 'afk_timeout': 300, 'owner_configured_content_level': 0, 'verification_level': 0, 'unavailable': False, 'description': None, 'owner_id': '601550347164581950', 'max_members': 25000000, 'nsfw': False, 'members': [{'user': {'username': 'TheTip', 'public_flags': 0, 'primary_guild': None, 'id': '1402121492023480371', 'global_name': None, 'display_name_styles': None, 'display_name': None, 'discriminator': '5942', 'collectibles': None, 'bot': True, 'avatar_decoration_data': None, 'avatar': 'cf9a72adc0565447498427676448a23f'}, 'roles': ['1402123817496744031'], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-08-05T02:59:28.413000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}], 'roles': [{'version': 0, 'unicode_emoji': None, 'tags': {}, 'position': 0, 'permissions': '2248473465839169', 'name': '@everyone', 'mentionable': False, 'managed': False, 'id': '601552635891286056', 'icon': None, 'hoist': False, 'flags': 0, 'colors': {'tertiary_color': None, 'secondary_color': None, 'primary_color': 0}, 'color': 0}, {'version': 1754362768396, 'unicode_emoji': None, 'tags': {'bot_id': '1402121492023480371'}, 'position': 1, 'permissions': '563224831708224', 'name': 'TheTip', 'mentionable': False, 'managed': True, 'id': '1402123817496744031', 'icon': None, 'hoist': False, 'flags': 0, 'colors': {'tertiary_color': None, 'secondary_color': None, 'primary_color': 0}, 'color': 0}], 'large': False, 'lazy': True, 'discovery_splash': None, 'premium_tier': 0, 'max_stage_video_channel_users': 50, 'joined_at': '2025-08-05T02:59:28.413000+00:00', 'application_command_counts': {}, 'region': 'deprecated', 'channels': [{'version': 0, 'type': 4, 'position': 0, 'permission_overwrites': [], 'name': 'Text Channels', 'id': '601552636390670337', 'flags': 0}, {'version': 0, 'type': 0, 'topic': None, 'rate_limit_per_user': 0, 'position': 0, 'permission_overwrites': [], 'parent_id': '601552636390670337', 'name': 'general', 'last_message_id': '1403200210196500580', 'id': '601552636390670338', 'flags': 0}, {'version': 0, 'type': 4, 'position': 0, 'permission_overwrites': [], 'name': 'Voice Channels', 'id': '601552636390670340', 'flags': 0}, {'version': 0, 'user_limit': 0, 'type': 2, 'rtc_region': None, 'rate_limit_per_user': 0, 'position': 0, 'permission_overwrites': [], 'parent_id': '601552636390670340', 'name': 'General', 'last_message_id': '1402472422346719292', 'id': '601552636390670341', 'flags': 0, 'bitrate': 64000}, {'version': 1684803790153, 'type': 0, 'topic': None, 'rate_limit_per_user': 0, 'position': 1, 'permission_overwrites': [], 'parent_id': '601552636390670340', 'name': 'test', 'last_message_id': None, 'id': '1110372317244162130', 'flags': 0}, {'version': 1754449191048, 'type': 0, 'topic': None, 'rate_limit_per_user': 0, 'position': 2, 'permission_overwrites': [], 'parent_id': '601552636390670337', 'name': 'bot-ideas', 'last_message_id': '1402486596967731260', 'id': '1402486300799664160', 'flags': 0}], 'premium_features': None, 'explicit_content_filter': 0, 'rules_channel_id': None, 'activity_instances': [], 'emojis': [], 'application_id': None, 'member_count': 4, 'features': [], 'incidents_data': None, 'banner': None, 'vanity_url_code': None, 'default_message_notifications': 0, 'presences': [], 'hub_type': None, 'version': 1754362692716, 'nsfw_level': 0}} +[2025-08-07 21:36:17] [DEBUG ] discord.client: Dispatching event socket_event_type +[2025-08-07 21:36:17] [DEBUG ] discord.gateway: For Shard ID None: WebSocket Event: {'t': 'GUILD_MEMBERS_CHUNK', 's': 4, 'op': 0, 'd': {'nonce': '46196e542f290db69fedea5bc1542ff8', 'members': [{'user': {'username': 'forcevader3113', 'public_flags': 0, 'primary_guild': None, 'id': '316811666052349953', 'global_name': 'Forcevader3113', 'display_name_styles': None, 'display_name': 'Forcevader3113', 'discriminator': '0', 'collectibles': None, 'bot': False, 'avatar_decoration_data': None, 'avatar': '06e596b49194bf3c9924587a63287f39'}, 'roles': ['1402697942162477097'], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-07-18T20:55:02.817000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}, {'user': {'username': 'platt53', 'public_flags': 0, 'primary_guild': None, 'id': '523000914781667329', 'global_name': 'Platt53', 'display_name_styles': None, 'display_name': 'Platt53', 'discriminator': '0', 'collectibles': None, 'bot': False, 'avatar_decoration_data': None, 'avatar': 'ceb7a94cd2b261a89633d2ca891e63e6'}, 'roles': ['1402697942162477097'], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-07-23T21:04:29.572000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}, {'user': {'username': 'ujtisgrumpy', 'public_flags': 0, 'primary_guild': None, 'id': '601550347164581950', 'global_name': 'ujt', 'display_name_styles': None, 'display_name': 'ujt', 'discriminator': '0', 'collectibles': None, 'bot': False, 'avatar_decoration_data': None, 'avatar': '18ba400e8c11c9136e7342598629e3ce'}, 'roles': ['1402697942162477097'], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-07-23T21:19:52.580000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}, {'user': {'username': 'copen_snuff', 'public_flags': 0, 'primary_guild': None, 'id': '930613389305200692', 'global_name': 'copen_snuff', 'display_name_styles': None, 'display_name': 'copen_snuff', 'discriminator': '0', 'collectibles': None, 'bot': False, 'avatar_decoration_data': None, 'avatar': 'ca0e9c274dc59828554f687ba3a34157'}, 'roles': [], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-08-07T14:31:23.457265+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}, {'user': {'username': 'n8n', 'public_flags': 0, 'primary_guild': None, 'id': '1397636084808155187', 'global_name': None, 'display_name_styles': None, 'display_name': None, 'discriminator': '3983', 'collectibles': None, 'bot': True, 'avatar_decoration_data': None, 'avatar': None}, 'roles': ['1397639894897262674'], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-07-23T18:01:57.880000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}, {'user': {'username': 'TheTip', 'public_flags': 0, 'primary_guild': None, 'id': '1402121492023480371', 'global_name': None, 'display_name_styles': None, 'display_name': None, 'discriminator': '5942', 'collectibles': None, 'bot': True, 'avatar_decoration_data': None, 'avatar': 'cf9a72adc0565447498427676448a23f'}, 'roles': ['1403203726423883912'], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-08-08T02:30:38.809057+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}], 'guild_id': '1395871513223233686', 'chunk_index': 0, 'chunk_count': 1}} +[2025-08-07 21:36:17] [DEBUG ] discord.client: Dispatching event socket_event_type +[2025-08-07 21:36:17] [DEBUG ] discord.state: Processed a chunk for 6 members in guild ID 1395871513223233686. +[2025-08-07 21:36:18] [DEBUG ] discord.gateway: For Shard ID None: WebSocket Event: {'t': 'GUILD_MEMBERS_CHUNK', 's': 5, 'op': 0, 'd': {'nonce': '8f12f095c1a94181fc5fe20b9ab4df4a', 'members': [{'user': {'username': 'forcevader3113', 'public_flags': 0, 'primary_guild': None, 'id': '316811666052349953', 'global_name': 'Forcevader3113', 'display_name_styles': None, 'display_name': 'Forcevader3113', 'discriminator': '0', 'collectibles': None, 'bot': False, 'avatar_decoration_data': None, 'avatar': '06e596b49194bf3c9924587a63287f39'}, 'roles': [], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-08-06T01:47:22.401000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}, {'user': {'username': 'platt53', 'public_flags': 0, 'primary_guild': None, 'id': '523000914781667329', 'global_name': 'Platt53', 'display_name_styles': None, 'display_name': 'Platt53', 'discriminator': '0', 'collectibles': None, 'bot': False, 'avatar_decoration_data': None, 'avatar': 'ceb7a94cd2b261a89633d2ca891e63e6'}, 'roles': [], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-08-05T23:49:07.585000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}, {'user': {'username': 'ujtisgrumpy', 'public_flags': 0, 'primary_guild': None, 'id': '601550347164581950', 'global_name': 'ujt', 'display_name_styles': None, 'display_name': 'ujt', 'discriminator': '0', 'collectibles': None, 'bot': False, 'avatar_decoration_data': None, 'avatar': '18ba400e8c11c9136e7342598629e3ce'}, 'roles': [], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2019-07-18T23:15:24.739000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}, {'user': {'username': 'TheTip', 'public_flags': 0, 'primary_guild': None, 'id': '1402121492023480371', 'global_name': None, 'display_name_styles': None, 'display_name': None, 'discriminator': '5942', 'collectibles': None, 'bot': True, 'avatar_decoration_data': None, 'avatar': 'cf9a72adc0565447498427676448a23f'}, 'roles': ['1402123817496744031'], 'premium_since': None, 'pending': False, 'nick': None, 'mute': False, 'joined_at': '2025-08-05T02:59:28.413000+00:00', 'flags': 0, 'deaf': False, 'communication_disabled_until': None, 'banner': None, 'avatar': None}], 'guild_id': '601552635891286056', 'chunk_index': 0, 'chunk_count': 1}} +[2025-08-07 21:36:18] [DEBUG ] discord.client: Dispatching event socket_event_type +[2025-08-07 21:36:18] [DEBUG ] discord.state: Processed a chunk for 4 members in guild ID 601552635891286056. +[2025-08-07 21:36:19] [DEBUG ] discord.client: Dispatching event guild_available +[2025-08-07 21:36:19] [DEBUG ] discord.client: Dispatching event guild_available +[2025-08-07 21:36:19] [DEBUG ] discord.client: Dispatching event ready +[2025-08-07 21:36:19] [DEBUG ] discord.http: GET https://discord.com/api/v10/guilds/601552635891286056/members with None has returned 200 +[2025-08-07 21:36:19] [DEBUG ] discord.http: GET /guilds/{guild_id}/members has found its initial rate limit bucket hash (14bcf0781dad097b39d603c7d772f784). +[2025-08-07 21:36:19] [DEBUG ] discord.http: GET https://discord.com/api/v10/guilds/601552635891286056/members has received [{'avatar': None, 'banner': None, 'communication_disabled_until': None, 'flags': 0, 'joined_at': '2025-08-06T01:47:22.401000+00:00', 'nick': None, 'pending': False, 'premium_since': None, 'roles': [], 'unusual_dm_activity_until': None, 'collectibles': None, 'user': {'id': '316811666052349953', 'username': 'forcevader3113', 'avatar': '06e596b49194bf3c9924587a63287f39', 'discriminator': '0', 'public_flags': 0, 'flags': 0, 'banner': None, 'accent_color': None, 'global_name': 'Forcevader3113', 'avatar_decoration_data': None, 'collectibles': None, 'display_name_styles': None, 'banner_color': None, 'clan': None, 'primary_guild': None}, 'mute': False, 'deaf': False}, {'avatar': None, 'banner': None, 'communication_disabled_until': None, 'flags': 0, 'joined_at': '2025-08-05T23:49:07.585000+00:00', 'nick': None, 'pending': False, 'premium_since': None, 'roles': [], 'unusual_dm_activity_until': None, 'collectibles': None, 'user': {'id': '523000914781667329', 'username': 'platt53', 'avatar': 'ceb7a94cd2b261a89633d2ca891e63e6', 'discriminator': '0', 'public_flags': 0, 'flags': 0, 'banner': None, 'accent_color': None, 'global_name': 'Platt53', 'avatar_decoration_data': None, 'collectibles': None, 'display_name_styles': None, 'banner_color': None, 'clan': None, 'primary_guild': None}, 'mute': False, 'deaf': False}, {'avatar': None, 'banner': None, 'communication_disabled_until': None, 'flags': 0, 'joined_at': '2019-07-18T23:15:24.739000+00:00', 'nick': None, 'pending': False, 'premium_since': None, 'roles': [], 'unusual_dm_activity_until': None, 'collectibles': None, 'user': {'id': '601550347164581950', 'username': 'ujtisgrumpy', 'avatar': '18ba400e8c11c9136e7342598629e3ce', 'discriminator': '0', 'public_flags': 0, 'flags': 0, 'banner': None, 'accent_color': None, 'global_name': 'ujt', 'avatar_decoration_data': None, 'collectibles': None, 'display_name_styles': None, 'banner_color': None, 'clan': None, 'primary_guild': None}, 'mute': False, 'deaf': False}, {'avatar': None, 'banner': None, 'communication_disabled_until': None, 'flags': 0, 'joined_at': '2025-08-05T02:59:28.413000+00:00', 'nick': None, 'pending': False, 'premium_since': None, 'roles': ['1402123817496744031'], 'unusual_dm_activity_until': None, 'collectibles': None, 'user': {'id': '1402121492023480371', 'username': 'TheTip', 'avatar': 'cf9a72adc0565447498427676448a23f', 'discriminator': '5942', 'public_flags': 0, 'flags': 0, 'bot': True, 'banner': None, 'accent_color': None, 'global_name': None, 'avatar_decoration_data': None, 'collectibles': None, 'display_name_styles': None, 'banner_color': None, 'clan': None, 'primary_guild': None}, 'mute': False, 'deaf': False}] +[2025-08-07 21:36:19] [ERROR ] discord.client: Ignoring exception in on_ready +Traceback (most recent call last): + File "C:\Users\admin\Desktop\Python Stuff\Discord Bot\.venv\Lib\site-packages\sqlite_utils\db.py", line 1555, in get + row = list(rows)[0] + ~~~~~~~~~~^^^ +IndexError: list index out of range + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "C:\Users\admin\Desktop\Python Stuff\Discord Bot\.venv\Lib\site-packages\discord\client.py", line 481, in _run_event + await coro(*args, **kwargs) + File "c:\Users\admin\Desktop\Python Stuff\Discord Bot\Main.py", line 43, in on_ready + add_user_to_db(member) + ~~~~~~~~~~~~~~^^^^^^^^ + File "c:\Users\admin\Desktop\Python Stuff\Discord Bot\Main.py", line 91, in add_user_to_db + existing = usersTable.get(userID) + File "C:\Users\admin\Desktop\Python Stuff\Discord Bot\.venv\Lib\site-packages\sqlite_utils\db.py", line 1559, in get + raise NotFoundError +sqlite_utils.db.NotFoundError diff --git a/hello.py b/hello.py new file mode 100644 index 0000000..f014a07 --- /dev/null +++ b/hello.py @@ -0,0 +1,14 @@ +import sqlite_utils + +#Create (or open) the database +db = sqlite_utils.Database("dbot.db") + +#Create the 'users' table with some example columns +#primary_key=True means 'id' will be the unique identifier +db["users"].create({ + "id": int, + "username": str, + "balance": int +}, pk="id", if_not_exists=True) + +print("Database and 'users' table created successfully!") \ No newline at end of file diff --git a/memberImport.py b/memberImport.py new file mode 100644 index 0000000..e69de29 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b0ab1b5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +discord.py +python-dotenv +sqlite-utils +pandas \ No newline at end of file