рд╕рд╛рдЗрдХреНрд▓рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдЕрд░реНрдерд╢рд╛рд╕реНрддреНрд░ рдХреЗ рд╕рд╛рде рдмреЙрдЯ рдХреЛ рддреНрдпрд╛рдЧреЗрдВ

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!


рдореИрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рд╕рд╛рдЗрдХреНрд▓рд╛рдЗрдЯ рдФрд░ рдЕрдиреНрдп рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХрд▓рд╕реНрдЯрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрд░реНрдерд╢рд╛рд╕реНрддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдмреЙрдЯ рд▓рд┐рдЦрд╛ рдерд╛ред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг


рд╡рдирд╕реНрдкрддрд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг


рдЗрд╕рд▓рд┐рдП, рдПрдХ рдмреЙрдЯ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдФрд░ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  1. рдбреЗрд╡рд▓рдкрд░ рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдПрдВ
  2. "рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдмреЙрдЯ рдХреЛ рдирд╛рдо рджреЗрдВ
  3. рдЕрдкрдиреЗ рдмреЙрдЯ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдХреЗ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рдмреЙрдЯ рдЯреИрдм рдвреВрдВрдврдХрд░ рдмреЙрдЯ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓


рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдо рдЕрдЬрдЧрд░ рдореЗрдВ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдПрдПрд╕рдПрдо рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА

$ pip install discord.py # api     

 $ pip install tabulate #     

рд▓реЗрдЦрди рдордВрдЪ


рдЖрдпрд╛рдд рдореЙрдбреНрдпреВрд▓


HTML + CSS рдореЗрдВ рд╕рд┐рдВрдЧрд▓ рдкреЗрдЬ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдкреЛрд░реНрдЯрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдЙрддрдирд╛ рд╣реА рд╕рд░рд▓ рд╣реИред

 import sqlite3 # sqlite import discord # discord api from discord.ext import commands #     from tabulate import tabulate #     import json #    ,        

Sqlite рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ


рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦреЗрдВ:

 conn = sqlite3.connect("Discord.db") #  :memory: cursor = conn.cursor() 

рдбреЗрдЯрд╛рдмреЗрд╕ рддреИрдпрд╛рд░реА


рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ 2 рд╢реЙрдк рдФрд░ рдпреВрдЬрд░реНрд╕ рдЯреЗрдмрд▓ рд╣реЛрдВрдЧреЗред

 CREATE TABLE "shop" ( "id" INT, "type" TEXT, "name" TEXT, "cost" INT ) 

 CREATE TABLE "users" ( "id" INT, "nickname" TEXT, "mention" TEXT, "money" INT, "rep_rank" TEXT, "inventory" TEXT, "lvl" INT, "xp" INT ) 

рдмреЙрдЯ рд▓реЙрдЬрд┐рдХ рд▓рд┐рдЦрдиреЗ рдХреА рддреИрдпрд╛рд░реА


рдмреЙрдЯ рд╡реИрд░рд┐рдПрдмрд▓ рдмрдирд╛рдПрдВред

 bot = commands.Bot(command_prefix="_")#  command_prefix    , , ,   .. 

рд╕рднреА рдХреЛрдб рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдмреЙрдЯ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреА рд╣реИред

 bot.run(" ,       ") 

рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдмреЙрдЯ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

 bot = commands.Bot(command_prefix="_") #     bot.run(" ,       ") 

рдЕрдЧрд▓рд╛, рд╣рдо on_ready () рдИрд╡реЗрдВрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдмреЙрдЯ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

 @bot.event async def on_ready(): print("Bot Has been runned")#   for guild in bot.guilds:#..    ,       print(guild.id)# id  serv=guild#    for member in guild.members:#,    cursor.execute(f"SELECT id FROM users where id={member.id}")#,      if cursor.fetchone()==None:#   cursor.execute(f"INSERT INTO users VALUES ({member.id}, '{member.name}', '<@{member.id}>', 50000, 'S','[]',0,0)")#       else:#  pass conn.commit()#    

рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдмреЙрдЯ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, on_member_join () рд╡рд┐рдзрд┐ рд▓рд┐рдЦреЗрдВ

 @bot.event async def on_member_join(member): cursor.execute(f"SELECT id FROM users where id={member.id}")# ,      if cursor.fetchone()==None:#   cursor.execute(f"INSERT INTO users VALUES ({member.id}, '{member.name}', '<@{member.id}>', 50000, 'S','[]',0,0)")#       else:#  pass conn.commit()#    

рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдмреЙрдЯ рдЖрд░реНрдерд┐рдХ рд╣реИ, рддреЛ рдПрдХ рдореБрджреНрд░рд╛, рдЙрд╕рдХреА рдХрдорд╛рдИ рдФрд░ рдЙрд╕рдХрд╛ рдЦрд░реНрдЪ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреБрднрд╡ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдорд╛рдИ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

 @bot.event async def on_message(message): if len(message.content) > 10:#    > 10 ... for row in cursor.execute(f"SELECT xp,lvl,money FROM users where id={message.author.id}"): expi=row[0]+random.randint(5, 40)#     cursor.execute(f'UPDATE users SET xp={expi} where id={message.author.id}') lvch=expi/(row[1]*1000) print(int(lvch)) lv=int(lvch) if row[1] < lv:#    ,     ,... await message.channel.send(f' !')#  ... bal=1000*lv cursor.execute(f'UPDATE users SET lvl={lv},money={bal} where id={message.author.id}')#    await bot.process_commands(message)#     ctx  conn.commit()#    

рд╣рдордиреЗ рдореБрдЦреНрдп рднрд╛рдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд▓рд┐рдЦрд╛ рдерд╛ред рдпрд╣ рдЦрд╛рддрд╛, рд╕реНрдЯреЛрд░ рдЖрджрд┐ рдЬреИрд╕реА рдХрдорд╛рдВрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред рдореИрдВ рдФрд░ рд╕рд╣рдЬрддрд╛ рд╕реЗ рд╕реЛрдЪрддрд╛ рд╣реВрдВред

 @bot.command() async def account(ctx): # _account ( "_",     ) table=[["nickname","money","lvl","xp"]] for row in cursor.execute(f"SELECT nickname,money,lvl,xp FROM users where id={ctx.author.id}"): table.append([row[0],row[1],row[2],row[3]]) await ctx.send(f">\n{tabulate(table)}") @bot.command() async def inventory(ctx):# _inventory ( "_",     ) counter=0 for row in cursor.execute(f"SELECT inventory FROM users where id={ctx.author.id}"): data=json.loads(row[0]) table=[["id","type","name"]] for row in data: prt=row for row in cursor.execute(f"SELECT id,type,name FROM shop where id={prt}"): counter+=1 table.append([row[0],row[1],row[2]]) if counter==len(data): await ctx.send(f'>\n{tabulate(table)}') @bot.command() async def shop(ctx):# _shop ( "_",     ) counter=0 table=[["id","type","name","cost"]] for row in cursor.execute(f"SELECT id,type,name,cost FROM shop"): counter+=1 table.append([row[0],row[1],row[2],row[3]]) if counter==4: await ctx.send(f'>\n{tabulate(table)}') 

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрдЯреЛрд░ рд╣реИ, рддреЛ рдЖрдк рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдпрд╣ рдирд╣реАрдВ рд╣реИ?

 async def buy(ctx, a: int): uid=ctx.author.id await ctx.send('...    ,   id  [buy {id}]') for row in cursor.execute(f"SELECT money FROM users where id={uid}"): money = row[0] for row in cursor.execute(f"SELECT id,name,cost FROM shop where id={a}"): cost=row[2] if money >= cost:#    ,... money -=cost await ctx.send(f'  "{row[1]}"  {row[2]}') for row in cursor.execute(f"SELECT inventory FROM users where id={uid}"): data=json.loads(row[0]) data.append(a) daed=json.dumps(data) cursor.execute('UPDATE users SET money=?,inventory = ? where id=?',(money,daed,uid))#     pass if money < cost:#    await ctx.send(f' ') pass conn.commit()#    

рдирд┐рд╖реНрдХрд░реНрд╖


рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рдмреЙрдЯ рд╣реИред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдЪрд┐рдкреНрд╕ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ (рдЖрд╡рд╢реНрдпрдХ) рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдб рдХрд╛ рдПрдХ рдирдВрдЧреЗ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬреЛ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ discord.py, sqlite рдореЙрдбреНрдпреВрд▓ рдФрд░ рдкрд╛рдпрдерди рдмрд┐рд▓реНрдЯ-рдЗрди рддрд░реАрдХреЛрдВ рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП!

Source: https://habr.com/ru/post/hi482290/


All Articles