Как мне создать магазин для бота discord на python 3.6.4?

#python #python-3.x #bots

#python #python-3.x #боты

Вопрос:

Итак, я создал валюту для бота под названием «battlePoints» или сокращенно bp. Проблема в том, что я хочу создать магазин для покупки товаров (его не обязательно хранить) Я уже получил это, но не знаю, как преобразовать в команду типа buy name.

 items = {
    "Game1":[3,20],
    "Game2":[5,30],
    "game3":[5,20],
    "game4":[8,10],
    }
while True:
    print("game1 = 3BP / game2 = 5BP / game3 = 5BP / game4 = 8BP")
    print("Account Balance bp",stash)
    choice = input("What would you like to buy?: ").strip().title()
    if choice in items:
        if items[choice][1]>0:
            if stash>=items[choice][0]:
                items[choice][1]=items[choice][1]-1
                stash= stash-items[choice][0]
                print("Thank you..!")
                print("")
            else:
                print("Sorry you dont enough money...")
                print("")
        else:
            print("sorry sold out")
            print("")
    else:
        print("Sorry we dont have that item...")
        print("")
  

Я пытался добавить в client.commmand()
асинхронный def buy(): и затем код, но i, похоже, не работает.
Не могли бы вы указать мне правильное направление, показать мне, где я могу найти ответ, или, пожалуйста, просто скажите мне, что я сделал не так

Комментарии:

1. У вас есть готовый и работающий бот или вы пытаетесь его создать, и это весь имеющийся у вас код?

2. у меня запущен бот, вот ссылка на полный код hastebin.com/qijajujogu.py

Ответ №1:

Я предполагаю, что проблема будет в том, choice = input("What would you like to buy?: ").strip().title() что боты не получают входные данные через input() функцию. Однако обычно вы можете передать контекст сообщения своим функциям. Я вижу в вашем полном коде, что у вас есть:

 @commands.has_role('Moderator')
@client.command(pass_context = True)
async def clear(ctx, amount=100):
  

Где я отмечу pass_context = True . Это позволяет вашей функции считывать контекст и содержимое сообщения discord. Например, вы можете вызвать ctx.message.author , чтобы узнать автора сообщения, которое интерпретируется. Итак, если, скажем, «Боб Джо» вводит «!очистить 50», тогда:

 ctx.message.author == "Bob Joe"
  

Это также должно измениться amount со 100 -> 50. Используя аналогичные методы, у вас может быть пользователь «!buy GoldShoes», и это вызовет ваш async def buy(ctx, item): случай, когда:

 item == "GoldShoes"
  

Что делать с этим вводом, зависит от вашей логики, но, возможно, это поможет немного объяснить процесс. Дайте мне знать, если я что-то не понял.

Ответ №2:

Вы не должны использовать print() и input() , там есть разные функции и модули, вы должны установить и импортировать discord, также импортировать команды из discord.ext . затем добавьте ctx в качестве параметра в команду, которую вы используете await ctx.send(message) . вы используете client.wait_for('message') , это больше похоже input() . Я предлагаю вам ознакомиться с документами для discord.py это полностью отличается от этого.