Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 08e0d41a09 |
189
main.py
189
main.py
|
|
@ -1,5 +1,6 @@
|
|||
import discord
|
||||
from discord.ext import commands
|
||||
from discord.commands import option
|
||||
import requests
|
||||
import json
|
||||
from datetime import datetime as dt
|
||||
|
|
@ -15,15 +16,70 @@ def readToken(filePath):
|
|||
|
||||
|
||||
|
||||
### sends a get request to the sheet
|
||||
async def getFromSheet(gsheetToken):
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(gsheetToken) as response:
|
||||
print("Status:", response.status)
|
||||
text = await response.text()
|
||||
|
||||
return text
|
||||
|
||||
|
||||
### takes a json, returns a http code
|
||||
async def postToSheet(data, gsheetToken):
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.post(gsheetToken, json=data) as response:
|
||||
# print("Status:", response.status)
|
||||
text = await response.text()
|
||||
print(text)
|
||||
print("Status:", response.status)
|
||||
return response.status
|
||||
|
||||
|
||||
### carrier state parser, takes the values from the sheet and turn it into something we can use
|
||||
|
||||
async def parseCarrierState(state):
|
||||
tupleList = []
|
||||
splitState = state.split(",")
|
||||
|
||||
for i in range(0,len(splitState),2):
|
||||
carrier = splitState[i]
|
||||
state = splitState[i+1]
|
||||
if carrier != "" and state != "":
|
||||
tupleList.append((carrier, state))
|
||||
|
||||
return tupleList
|
||||
|
||||
### converts a list of tuple back to the sheet syntax (CSV)
|
||||
async def toRawState(tupleList):
|
||||
rawState = []
|
||||
for value in tupleList:
|
||||
for subval in value:
|
||||
rawState.append([subval])
|
||||
rawLen = len(rawState)
|
||||
|
||||
for i in range(rawLen, 41):
|
||||
rawState.append([""])
|
||||
|
||||
return rawState
|
||||
|
||||
|
||||
async def getListOfCarriers(state):
|
||||
splitState = state.split(",")
|
||||
carrierList = []
|
||||
for i in range(0,len(splitState),2):
|
||||
carrier = splitState[i]
|
||||
if carrier != "":
|
||||
carrierList.append(carrier)
|
||||
|
||||
return carrierList
|
||||
|
||||
### used to query the carrier state internally
|
||||
async def getInternalCarrierState():
|
||||
response = await getFromSheet(gsheetToken)
|
||||
return response
|
||||
|
||||
|
||||
|
||||
|
||||
#creates the file if it doesn't exist. stores last command used by... users on this delivery.
|
||||
|
|
@ -71,6 +127,7 @@ async def delLastCommandFile():
|
|||
|
||||
|
||||
|
||||
|
||||
bot = commands.Bot()
|
||||
|
||||
# various tokens
|
||||
|
|
@ -122,6 +179,7 @@ async def delivery(ctx,
|
|||
await ctx.defer()
|
||||
|
||||
data = {
|
||||
"postType":"delivery",
|
||||
"username":author,
|
||||
"commodity": commodity,
|
||||
"quantity": quantity,
|
||||
|
|
@ -159,8 +217,9 @@ async def misc(ctx,
|
|||
await ctx.defer()
|
||||
|
||||
data = {
|
||||
"postType":"delivery",
|
||||
"username":author,
|
||||
"commodity": "Miscellaneous",
|
||||
"commodity": commodity,
|
||||
"quantity": quantity,
|
||||
"target": target
|
||||
}
|
||||
|
|
@ -179,6 +238,7 @@ async def misc(ctx,
|
|||
|
||||
|
||||
|
||||
|
||||
@bot.slash_command(
|
||||
name="last",
|
||||
# guild_ids=[401372086746087425],
|
||||
|
|
@ -211,9 +271,6 @@ async def last(ctx):
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#change url command
|
||||
@bot.slash_command(
|
||||
name="change-sheet-url",
|
||||
|
|
@ -235,6 +292,128 @@ async def changeSheetUrl(ctx,
|
|||
print("deleted command.last file content")
|
||||
except Exception as e:
|
||||
await ctx.followup.send(f"something shat the bed")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@bot.slash_command(
|
||||
name="getcarrierstate",
|
||||
# guild_ids=[401372086746087425],
|
||||
description= "gets the carriers state from the sheet"
|
||||
)
|
||||
async def getCarrierState(ctx):
|
||||
response = await getInternalCarrierState()
|
||||
carrierState = await parseCarrierState(response)
|
||||
await ctx.defer()
|
||||
|
||||
text = "Current Carrier State : \n"
|
||||
|
||||
for carrier, state in carrierState:
|
||||
text += f"{carrier} is {state}\n"
|
||||
|
||||
await ctx.followup.send(text)
|
||||
|
||||
|
||||
async def getCarriers(ctx: discord.AutocompleteContext):
|
||||
state = await getInternalCarrierState()
|
||||
carrierList = await getListOfCarriers(state)
|
||||
# print(carrierList)
|
||||
# return [carrier for carriers in carrierList]
|
||||
return carrierList
|
||||
|
||||
|
||||
@bot.slash_command(
|
||||
name="setcarrierstate",
|
||||
# guild_ids=[401372086746087425],
|
||||
description= "Sets a carrier state on the sheet"
|
||||
)
|
||||
@option("carrier", description="The carrier you want to edit", autocomplete=getCarriers)
|
||||
@option("state",required=True, description="The carrier you want to edit", choices=["Loading","Unloading","Full","Empty","Inactive"])
|
||||
async def setCarrierState(ctx, carrier, state):
|
||||
response = await getFromSheet(gsheetToken)
|
||||
carrierState = await parseCarrierState(response)
|
||||
|
||||
newCarrierState = []
|
||||
|
||||
print(f"requested values: {carrier} to {state}")
|
||||
|
||||
print(f"current values : {carrierState}")
|
||||
|
||||
for carrierS, stateS in carrierState:
|
||||
if carrier == carrierS:
|
||||
newCarrierState.append((carrier,state))
|
||||
else:
|
||||
newCarrierState.append((carrierS,stateS))
|
||||
|
||||
print(f"new values : {newCarrierState}")
|
||||
|
||||
rawState = await toRawState(newCarrierState)
|
||||
|
||||
print(rawState)
|
||||
|
||||
await ctx.defer()
|
||||
i = 1
|
||||
text = "Current Carrier State : \n"
|
||||
|
||||
|
||||
data = {
|
||||
"postType":"carrier",
|
||||
"carrierState": rawState
|
||||
|
||||
}
|
||||
|
||||
|
||||
try:
|
||||
response = await postToSheet(data, gsheetToken)
|
||||
if response == 200:
|
||||
await ctx.followup.send(f"hey")
|
||||
else:
|
||||
await ctx.followup.send(f"i fucked up ")
|
||||
except Exception as e:
|
||||
await ctx.followup.send(f"help : Error: {e}")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user