added bugs, lefttohaul, revamped http get, many more things that will break in fun ways

This commit is contained in:
TanguyPcFixe 2026-06-25 00:32:09 +02:00
parent 08e0d41a09
commit 8aa61a109e

112
main.py
View File

@ -1,12 +1,13 @@
import discord
from discord.ext import commands
from discord.ext import commands, tasks
from discord.commands import option
import requests
import json
from datetime import datetime as dt
from datetime import datetime
import aiohttp
import os
import asyncio
from math import floor
### reads token files
@ -17,18 +18,19 @@ 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:
async def getFromSheet(gsheetToken, data):
params = {"type":data}
print(params)
async with session.get(gsheetToken, params=params) as response:
print("Status:", response.status)
text = await response.text()
print(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:
text = await response.text()
print(text)
@ -76,7 +78,7 @@ async def getListOfCarriers(state):
### used to query the carrier state internally
async def getInternalCarrierState():
response = await getFromSheet(gsheetToken)
response = await getFromSheet(gsheetToken, "carrier")
return response
@ -135,10 +137,21 @@ discordToken = readToken("discord.token")
gsheetToken = readToken("sheet.token")
lastCommandFile = "command.last"
# default command to see if the bot has lived
@bot.listen()
async def on_connect():
global session
print("I'm alive, bitch")
session = aiohttp.ClientSession()
@bot.event
async def on_ready():
print("I'm ready, bitch")
writeToWhatsLeftToHaul.start()
# delivery command
# guild IDs are both IDA servers
@ -190,7 +203,7 @@ async def delivery(ctx,
response = await postToSheet(data, gsheetToken)
if response == 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}")
print(f"[{datetime.isoformat(datetime.now())}]{author} delivery of {quantity} of {commodity} to a {target}")
await writeDeliveryToCommandFile(author, data)
else:
await ctx.followup.send(f"Failed to log delivery (HTTP {response}). Please contact the yellow people if that keeps happening")
@ -228,7 +241,7 @@ async def misc(ctx,
response = await postToSheet(data, gsheetToken)
if response == 200:
await ctx.followup.send(f"your delivery of {quantity} of Miscellaneous stuff to a {target} has been added to the sheet!")
print(f"[{dt.isoformat(dt.now())}]{author} delivery of {quantity} of Miscellaneous to a {target}")
print(f"[{datetime.isoformat(datetime.now())}]{author} delivery of {quantity} of Miscellaneous to a {target}")
await writeDeliveryToCommandFile(author, data)
else:
await ctx.followup.send(f"Failed to log delivery (HTTP {response}). Please contact the yellow people if that keeps happening")
@ -259,7 +272,7 @@ async def last(ctx):
response = await postToSheet(data, gsheetToken)
if response == 200:
await ctx.followup.send(f"your delivery of {data['quantity']} of {data['commodity']} to a {data['target']} has been added to the sheet!")
print(f"[{dt.isoformat(dt.now())}] delivery of {data['quantity']} of {data['commodity']} to a {data['target']}")
print(f"[{datetime.isoformat(datetime.now())}] delivery of {data['quantity']} of {data['commodity']} to a {data['target']}")
await writeDeliveryToCommandFile(author, data)
else:
await ctx.followup.send(f"Failed to log delivery (HTTP {response}). Please contact the yellow people if that keeps happening")
@ -383,9 +396,86 @@ async def setCarrierState(ctx, carrier, state):
@bot.slash_command(
name="lefttohaul",
# guild_ids=[401372086746087425],
description= "gets the what's left to haul from the sheet"
)
async def lefttohaul(ctx):
response = await getFromSheet(gsheetToken, "commodity")
await ctx.defer()
text = "\n\n\n### Here's what's left to haul! Get to work!\n"
commodity, values = response.split("|")
commodity = commodity.split(",")
values = values.split(",")
finalDict = {}
for i in range(len(commodity)):
finalDict[commodity[i]] = int(values[i])
finalDict = dict(sorted(finalDict.items(), key=lambda item: item[1], reverse=True))
for key in finalDict:
if finalDict[key] > 0:
text += f"{key} : {finalDict[key]}\n"
await ctx.followup.send(text)
@tasks.loop(seconds=60)
async def writeToWhatsLeftToHaul():
response = await getFromSheet(gsheetToken, "commodity")
print("test")
text = "```"
commodity, values = response.split("|")
commodity = commodity.split(",")
values = values.split(",")
finalDict = {}
for i in range(len(commodity)):
finalDict[commodity[i]] = int(values[i])
finalDict = dict(sorted(finalDict.items(), key=lambda item: item[1], reverse=True))
for key in finalDict:
if finalDict[key] > 0:
text += f"{key} : {finalDict[key]}\n"
channel = bot.get_channel(1519457137234022460)
# await channel.purge(limit=1)
text += "```"
embed = discord.Embed(title="Estimated remaining amounts and where to get them",
colour=discord.Colour(0x29ac08),
description=text,
timestamp=datetime.now())
embed.set_thumbnail(url="https://cdn.discordapp.com/emojis/536647643367997492.png")
embed.set_footer(text="This message updates every 60 seconds(ish). Last updated at")
# if 'station_name' in config.config and 'station_link' in config.config:
# embed.set_author(name=u'\U0001F517 ' + config.config['station_name'] + u' \U0001F517',
# url=config.config['station_link'])
channel = bot.get_channel(1519457137234022460)
found = False
async for oldmsg in channel.history(limit=2):
if oldmsg.author == bot.user:
found = True
await oldmsg.edit(embed=embed)
break
if not found:
await channel.send(embed=embed)