Untitled
unknown
plain_text
3 years ago
2.6 kB
10
Indexable
# A small example demonstrating how to interact with caskets.
import asyncio
import json
import steam
from steam.ext import commands
import csgo
class BackpackItemConverter(
commands.Converter[csgo.BackpackItem]
): # custom converter to get `BackpackItem`s from the bot's inventory
async def convert(self, ctx: commands.Context, argument: str) -> csgo.BackpackItem:
backpack: csgo.Backpack = await ctx.bot.user.inventory(steam.CSGO)
try:
asset_id = int(argument)
except ValueError:
item = steam.utils.get(backpack, name=argument)
else:
item = steam.utils.get(backpack, id=asset_id)
if item is None:
raise commands.BadArgument(f"{argument!r} is not present in the backpack")
return item
class MyBot(csgo.Bot):
@commands.group
async def casket(self, ctx: commands.Context, *, casket: csgo.BackpackItem):
"""Get info about a casket/storage container."""
if not isinstance(casket, csgo.Casket):
return await ctx.send(f"{casket.name!r} is not a casket.")
contents = await casket.contents()
await ctx.send(
f"""Info on {casket.custom_name!r}:
- contains {casket.contained_item_count} items
- first item in it is {contents[0].id}
"""
)
@casket.command
async def add(self, ctx: commands.Context, item: csgo.BackpackItem, casket: csgo.BackpackItem):
"""Add an item to a casket."""
if not isinstance(casket, csgo.Casket):
return await ctx.send(f"{casket.name} is not a casket.")
await casket.add(item)
await ctx.send("👌")
@casket.command
async def remove(self, ctx: commands.Context, item_id: int, casket: csgo.BackpackItem):
"""Remove an item from a casket."""
if not isinstance(casket, csgo.Casket):
return await ctx.send(f"{casket.name} is not a casket.")
contents = await casket.contents()
casket_item = steam.utils.get(contents, asset_id=item_id)
if casket_item is None:
return await ctx.send(f"{item_id} is not in the casket.")
await casket.remove(casket_item)
await ctx.send("👌")
async def main():
bot = MyBot(command_prefix="!")
secrets = json.load(open(f'./mysecrets1.json'))
await bot.login(username=secrets["account_name"], password=secrets["password"], shared_secret=secrets["shared_secret"])
asyncio.run(main())Editor is loading...