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 import discord
from discord.ext import commands from discord.ext import commands, tasks
from discord.commands import option from discord.commands import option
import requests import requests
import json import json
from datetime import datetime as dt from datetime import datetime
import aiohttp import aiohttp
import os import os
import asyncio import asyncio
from math import floor
### reads token files ### reads token files
@ -17,18 +18,19 @@ def readToken(filePath):
### sends a get request to the sheet ### sends a get request to the sheet
async def getFromSheet(gsheetToken): async def getFromSheet(gsheetToken, data):
async with aiohttp.ClientSession() as session:
async with session.get(gsheetToken) as response: params = {"type":data}
print(params)
async with session.get(gsheetToken, params=params) as response:
print("Status:", response.status) print("Status:", response.status)
text = await response.text() text = await response.text()
print(text)
return text return text
### takes a json, returns a http code ### takes a json, returns a http code
async def postToSheet(data, gsheetToken): async def postToSheet(data, gsheetToken):
async with aiohttp.ClientSession() as session:
async with session.post(gsheetToken, json=data) as response: async with session.post(gsheetToken, json=data) as response:
text = await response.text() text = await response.text()
print(text) print(text)
@ -76,7 +78,7 @@ async def getListOfCarriers(state):
### used to query the carrier state internally ### used to query the carrier state internally
async def getInternalCarrierState(): async def getInternalCarrierState():
response = await getFromSheet(gsheetToken) response = await getFromSheet(gsheetToken, "carrier")
return response return response
@ -135,10 +137,21 @@ discordToken = readToken("discord.token")
gsheetToken = readToken("sheet.token") gsheetToken = readToken("sheet.token")
lastCommandFile = "command.last" lastCommandFile = "command.last"
# default command to see if the bot has lived # default command to see if the bot has lived
@bot.listen() @bot.listen()
async def on_connect(): async def on_connect():
global session
print("I'm alive, bitch") print("I'm alive, bitch")
session = aiohttp.ClientSession()
@bot.event
async def on_ready():
print("I'm ready, bitch")
writeToWhatsLeftToHaul.start()
# delivery command # delivery command
# guild IDs are both IDA servers # guild IDs are both IDA servers
@ -190,7 +203,7 @@ async def delivery(ctx,
response = await postToSheet(data, gsheetToken) response = await postToSheet(data, gsheetToken)
if response == 200: if response == 200:
await ctx.followup.send(f"your delivery of {quantity} of {commodity} to a {target} has been added to the sheet!") 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) await writeDeliveryToCommandFile(author, data)
else: else:
await ctx.followup.send(f"Failed to log delivery (HTTP {response}). Please contact the yellow people if that keeps happening") 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) response = await postToSheet(data, gsheetToken)
if response == 200: if response == 200:
await ctx.followup.send(f"your delivery of {quantity} of Miscellaneous stuff to a {target} has been added to the sheet!") 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) await writeDeliveryToCommandFile(author, data)
else: else:
await ctx.followup.send(f"Failed to log delivery (HTTP {response}). Please contact the yellow people if that keeps happening") 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) response = await postToSheet(data, gsheetToken)
if response == 200: 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!") 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) await writeDeliveryToCommandFile(author, data)
else: else:
await ctx.followup.send(f"Failed to log delivery (HTTP {response}). Please contact the yellow people if that keeps happening") 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)