Бот в дискорде - как в конце кода при вводе "Да" запустить код заново?
import discord
from discord.ext import commands
import random
from random import randint, choice
import time
import os
bot = commands.Bot(command_prefix='$')
@bot.command('go')
# в start не указал ctx в скобках
async def start(ctx):
result = 0
result_bot = 0
choice = True
diler = True
while diler:
result_bot += randint(1, 10)
await ctx.send(f'--У дилера выпало {result_bot}--')
diler = False
while choice:
result += randint(1, 10)
time.sleep(1)
await ctx.send(f'_У вас {result} очков')
time.sleep(0.6)
if result > 21:
await ctx.send('Вы проиграли')
result = 0
result_bot = 0
choice = False
else:
await ctx.send('продолжать?(Go/stop)')
answ = await bot.wait_for('message')
if answ.content == 'stop':
if result == 21:
await ctx.send('Вы выйграли')
result = 0
result_bot = 0
choice = False
else:
while True:
result_bot += randint(1, 10)
await ctx.send(f'--У дилера выпало {result_bot}--')
time.sleep(1)
if result_bot > result and result_bot < 21 and result_bot != 21:
await ctx.send('Вы проиграли')
result = 0
result_bot = 0
choice = False
break
if result_bot > 21:
await ctx.send('Вы выйграли!')
result = 0
result_bot = 0
choice = False
break
await ctx.send('Ещё раз?(Дa/Нет)')
again = await bot.wait_for('message')
again = again.content.lower()
if again == "да":
diler = True
choice = True
#Здесь код должен запуститься заново
else:
await ctx.send('Ладно')
Ответы (1 шт):
Автор решения: denisnumb
→ Ссылка
Прикладывать нужно только минимальный пример кода, а не весь. Поэтому ответ будет с минимальным примером.
Как вариант, можно вынести основную логику игры в отдельную функцию и вызывать ее при вызове команды:
# функция игры
async def game(ctx):
. . .
@bot.command()
async def go(ctx):
await game(ctx)
И при вводе "Да" из функции game() вызвать саму себя:
# функция игры
async def game(ctx):
. . .
await ctx.send('Ещё раз?(Дa/Нет)')
again = await bot.wait_for('message')
again = again.content.lower()
if again == "да":
await game(ctx)
. . .
И не забудьте сменить токен — это не та вещь, которую следует выкладывать в общий доступ, т.к. к вашему боту может получить доступ любой человек.