import discord from discord.ext import commands import requests import json from datetime import datetime as dt ### reads token files def readToken(filePath): with open(filePath, 'r') as f: return f.readline() bot = commands.Bot() # various tokens discordToken = readToken("discord.token") gsheetToken = readToken("sheet.token") # default command to see if the bot has lived @bot.listen() async def on_connect(): print("I'm alive, bitch") # delivery command # guild IDs are both IDA servers @bot.slash_command( name="delivery", guild_ids=[1349222984837107797, 401372086746087425], description= "sends your delivery to the bot!" ) async def delivery(ctx, commodity:discord.Option(str, choices=[ "Aluminium", "Ceramic Composites", "CMM Composite", "Computer Components", "Copper", "Food Cartridges", "Fruit and Vegetables", "Insulating Membrane", "Liquid Oxygen", "Medical Diagnostic Equipment", "Non-Lethal Weapons", "Polymers", "Power Generators", "Semiconductors", "Steel", "Superconductors", "Titanium", "Water", "Water Purifiers" ]), quantity: discord.Option(discord.SlashCommandOptionType.integer, description="Please be nice and input a value between 1 and 794") , target: discord.Option(str, choices=['Station', 'Carrier']) ): if quantity > 794 or quantity < 1: await ctx.respond(f"Quantity must be inbetween 1 and 794 (the clipper ain't out yet.)") return 0 author = str(ctx.author) author = author[:author.find(" ")] await ctx.defer() data = { "username":author, "commodity": commodity, "quantity": quantity, "target": target } try: response = requests.post(gsheetToken, json.dumps(data), headers={"Content-Type": "application/json"}) if response.status_code == 200: await ctx.followup.send(f"your delivery of {quantity} of {commodity} to a {target} has been added to the sheet!") print(f"[dt.isoformat(dt.now())]{author} delivery of {quantity} of {commodity} to a {target}") else: await ctx.followup.send(f"Failed to log delivery (HTTP {response.status_code}). Please contact the yellow people if that keeps happening") except Exception as e: await ctx.followup.send(f"help : Error: {e}") #change url command @bot.slash_command( name="change-sheet-url", guild_ids=[1349222984837107797, 401372086746087425], description= "changes the URL of the active sheet, use with caution" ) async def changeSheetUrl(ctx, url:discord.Option(discord.SlashCommandOptionType.string, description="the new URL") ): await ctx.defer() try: with open("sheet.token",'w') as f: f.write(url) await ctx.followup.send(f"URL has been set") except Exception as e: await ctx.followup.send(f"something shat the bed") #run the damn thing bot.run(discordToken)