added bugs, lefttohaul, revamped http get, many more things that will break in fun ways
This commit is contained in:
parent
08e0d41a09
commit
8aa61a109e
126
main.py
126
main.py
|
|
@ -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,23 +18,24 @@ 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:
|
|
||||||
print("Status:", response.status)
|
|
||||||
text = await response.text()
|
|
||||||
|
|
||||||
return text
|
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
|
### 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)
|
print("Status:", response.status)
|
||||||
print("Status:", response.status)
|
return response.status
|
||||||
return response.status
|
|
||||||
|
|
||||||
|
|
||||||
### carrier state parser, takes the values from the sheet and turn it into something we can use
|
### carrier state parser, takes the values from the sheet and turn it into something we can use
|
||||||
|
|
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user