Когда я увеличиваю выигрыш на 1 в БД и возвращаю количество выигрышей, которые есть у пользователя, он всегда выключается на 1.
Например, в коде ниже:
import discord
import pymongo
client = discord.Client()
mongo = MongoClient('localhost', 27017)
db = mongo.collection
profiles = db.profiles
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('!iwin'):
profile = profiles.find_one({'discordID': message.author.id})
updatewin = profiles.find_one_and_update({'discordID': message.author.id}, {"$inc":
{"wins": 1, "coins": 40}})
win_msg = "Your win has been recorded. You have {} wins!".format(profile['wins'])
Если я наберу! Iwin, 1 победа будет записана в БД, однако полученное сообщение будет Your win has been recorded. You have 0 wins!
И если я снова наберу! Iwin, записывается второй выигрыш, всего 2 выигрыша, но сообщение гласит Your win has been recorded. You have 1 wins!
Мне кажется, что сообщение отправляется до приращения, как мне обойти это?
EDIT
Это также влияет на любой тип операции, которую я пытаюсь добавить, используя поле wins. Например:
win_msg = "Your win has been recorded."
await message.channel.send(win_msg)
if profile['wins']%2==0:
roll = random.randint(1,809)
roll_msg = "You have won 2 games! Here is your roll: {}. Would you like to !keep or !reroll?".format(roll)
await message.channel.send(roll_msg)
Он всегда рассчитывает это неправильно. Поэтому, если у меня есть 2 победы в БД, это не дает бросок, но если у меня есть 1 выигрыш в БД, он делает вычисление броска.