简单建立一个银行系统

创建你的钱包

  • 一样,对比前面的match档,现在新增一个bank的json档案

  • 回到bot档,现在我们必须撰写2个部分,一个是读取,一个是确认你的这个key是否存在......

# cogs/includebanksystem.py
async def open_account(user):
    pass

# 省略

async def get_bank_data():
    pass
  • 前者必须确认key,後者只须要做read的这个部分即可
async def open_account(user):
    users = await get_bank_data()
    if str(user.id) in users:
        return False
    else:
        # 省略
    with open("bank.json", "w") as f:
        json.dump(users, f)
        
    return True

async def get_bank_data():
    with open("bank.json", "r")as f:            
        users = json.load(f)
    return users
  • 回到我们刚才省略的部分,原始资料一律用0
users[str(user.id)] = {}
users[str(user.id)]["wallet"] = 0
users[str(user.id)]["bank"] = 0
  • bank档
{

}

显示出你的钱包

  • 一样,先打开你的json,然後依照栏位做处理
# 略
@commands.command()
async def money(self, ctx):
    await open_account(ctx.author)
    user = ctx.author
    users = await get_bank_data()
    wallet = users[str(user.id)]["wallet"]
    bank = users[str(user.id)]["bank"]
  • 将资料拿出来後,使用先前的方法,做元素添加
  • 这边比较不一样的是,user.avatar_url(这个东西就是自己的头像 XD
em = discord.Embed(title = f"{ctx.author.name}'s 钱包", color = discord.Color.red())
em.set_thumbnail(url = user.avatar_url)
em.add_field(name = "Wallet", value = wallet)
em.add_field(name = "Bank", value = bank)
await ctx.send(embed = em)
  • 示意图

货物上架

  • 在bot最上放以json的格式,输入你想要的货物
# 略
shop = [
            {"name": "Watch", "price": 8},
            {"name": "Laptop", "price": 87},
            {"name": "PC", "price": 870},
            {"name": "PS5", "price": 690},
            {"name": "Cat", "price": 1000}
        ]
  • 回到下方,写出函式
@commands.command()
async def market(self, ctx):
        pass
  • 利用for......in......回圈
em = discord.Embed(title = "market", color = 0x6345)
em.set_thumbnail(url = "https://www.formula-ai.com/wp-content/uploads/2020/09/python_or_java_meme.jpg")
    
for item in shop:
    name = item["name"]
    price = item["price"]
    em.add_field(name = name, value = f"${price}")
await ctx.send(embed = em)
  • 示意图

<<:  【PHP Telegram Bot】Day09 - 用 PHP 主动接收和发送讯息吧!

>>:  Day 03 - Curry

[30天 Vue学好学满 DAY20] Vuex-3

Mutation 提交mutation,是更动state的唯一方法,并以state为第一个参数。 包...

学习JavaScript纪录Day1

学习目的: JavaScrip语言是网站客服端的最佳动态利器,想要制作一个生动的网页肯定不能少了他。...

SSRS Pass a Report Parameter Within a URL

欲找,RS可以指定汇出的档案名称否,结果看到这个. URL access parameter ref...

[Day18] NLP会用到的模型(二)-GRU

一. LSTM的问题 LSTM虽然非常强大,但LSTM也是有一个问题,就是计算时间较久导致执行速度较...

Day03 - 随意玩之 API 讯息内文以及 Sign

今天预计讲解下面两个 (也就是下图的步骤 5) API 的 JSON 内容 把内容加上 Nonce ...