Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import discord, random
- from credits import bot_token
- from discord.ext import commands
- client = discord.Client()
- bot = commands.Bot(command_prefix='!')
- token = bot_token
- words = ['ЧЕЛОВЕК', 'ИГРОК', 'ГОРОД', 'ОШИБКА','ГЕНИЙ']
- members = []
- lives = 0
- running = 'none'
- current_player = 0
- word = []
- display_word = []
- original_word = ''
- kicked_player = ''
- vote_to_kick = 0
- vote_to_not_kick = 0
- voted_players = []
- def init():
- global word, members,current_player,display_word,original_word,lives
- word = []
- display_word =[]
- original_word = ''
- current_player = 0
- members= []
- lives = 5
- @bot.command(name='start')
- async def start(ctx):
- global running, members, lives
- if running != 'none':
- await ctx.send('Игра уже началась! Чтобы завершить игру - введите команду !stop')
- else:
- running = 'joining'
- members.append(ctx.author.name)
- lives = 5
- await ctx.send("Игра началась! Пишите !join, если хотите присоединиться.")
- @bot.command(name= 'join')
- async def join(ctx):
- global members
- if running == 'none':
- await ctx.send('Пока некуда присоединяться. Введите !start, чтобы начать игру.')
- elif running == 'joining':
- if ctx.author.name not in members:
- members.append(ctx.author.name)
- await ctx.send("Вы в игре!")
- else:
- await ctx.send("Вы уже в игре!")
- else:
- await ctx.send('Игра уже начата :(')
- @bot.command(name = 'play')
- async def play(ctx):
- global running,word,display_word,original_word
- if running == 'none':
- await ctx.send('Игра пока не началась. Введите !start, чтобы начать')
- elif running == 'joining':
- running = 'running'
- a = random.choice(words)
- original_word = a
- for i in a:
- word.append(i)
- display_word.append('-')
- await ctx.send( 'Игра запущена! Загаданное слово: ' + ''.join(display_word) + ' Первым ходит ' + str(
- members[current_player]) + '. Введите команду !guess и букву.')
- else:
- await ctx.send('Игра запущена! Загаданное слово: ' + ''.join(display_word) + ' Первым ходит ' + str(
- members[current_player]) + '. Введите команду !guess и букву.')
- @bot.command(name = 'guess')
- async def guess(ctx, letter):
- global display_word,word,current_player,running,lives
- letter = letter.upper()
- if running == 'running':
- if ctx.author.name in members:
- if ctx.author.name in members[current_player]:
- if letter in word:
- while letter in word:
- display_word[word.index(letter)] = letter
- word[word.index(letter)] = "*"
- await ctx.send("Такая буква есть!")
- await ctx.send('Загаданное слово: ' + ' '.join(display_word) + '. Сейчас ходит ' + members[
- current_player] + '. Жизней осталось: ' + str(lives))
- else:
- lives -= 1
- await ctx.send("Такой буквы нет!")
- await ctx.send('Загаданное слово: ' + ' '.join(display_word) + '. Сейчас ходит ' + members[
- current_player] + '. Жизней осталось: ' + str(lives))
- if current_player == len(members) -1:
- current_player = 0
- else:
- current_player += 1
- else:
- await ctx.send('Ошибка! Сейчас ходит ' + str(members[current_player]))
- else:
- await ctx.send('Ошибка! Вы не зарегистрировались :(')
- if word.count("*") == len(word):
- await ctx.send('Слово отгадано, игра окончена. Чтобы начать новую - введите !start.')
- running = 'none'
- init()
- elif lives <= 0:
- await ctx.send('Слово не отгадано, а жизни кончились. Игра окончена. Чтобы начать новую - введите !start.')
- running = 'none'
- init()
- else:
- await ctx.send('Загаданное слово: ' + ' '.join(display_word) + '. Сейчас ходит ' + members[
- current_player] + '. Жизней осталось: ' + str(lives))
- elif running == 'none':
- await ctx.send('Игра пока не началась. Введите !start, чтобы начать')
- # Если игра в joining - сообщаем, что ждем пока все подключатся
- else:
- await ctx.send('Игра пока не запущена, ждем пока все подключатся. Чтобы начать игру - введите !play')
- @bot.command("kick")
- async def kick(ctx, name):
- global kicked_player, members,running
- if running == 'running':
- if name in members:
- await ctx.send('Голосование за кик запущено. Введите !vote, чтобы ваш голос был засчитан')
- kicked_player = name
- running = 'vote'
- else:
- await ctx.send('Такого игрока нет')
- else:
- await ctx.send('Игра не запущена')
- @bot.command(name = 'vote')
- async def vote(ctx, choice):
- global running, vote_to_kick, kicked_player, voted_players, vote_to_not_kick
- if running == 'vote':
- if ctx.author.name != kicked_player:
- if ctx.author.name not in voted_players:
- if choice == '+':
- vote_to_kick += 1
- elif choice == '-':
- vote_to_not_kick +=1
- await ctx.send(f'Ваш голос принят!Проголосовало {vote_to_kick} из {len(members)}, общий счет {vote_to_kick} vs {vote_to_not_kick}')
- else:
- await ctx.send(f'Вы уже голосовали!')
- else:
- await ctx.send(f'Вы не можите голосовать против себя!')
- else:
- await ctx.send(f'Голосование не запущено, отправте !kick + имя игрока')
- if (len(members) - 1) % 2 == 0 and vote_to_not_kick + vote_to_kick == (len(members) - 1):
- if vote_to_kick > (len(members)-1 / 2):
- members.remove(kicked_player)
- await ctx.send(f"Игрок {kicked_player} кикнут")
- await ctx.send('Загаданное слово: ' + ' '.join(display_word) + '. Сейчас ходит ' + members[
- current_player] + '. Жизней осталось: ' + str(lives))
- running = 'running'
- elif vote_to_not_kick > (len(members)-1 / 2):
- await ctx.send(f"Игрок {kicked_player} не кикнут")
- await ctx.send('Загаданное слово: ' + ' '.join(display_word) + '. Сейчас ходит ' + members[
- current_player] + '. Жизней осталось: ' + str(lives))
- running = 'running'
- else:
- await ctx.send('Ничья! Никого не кикнули')
- running = 'running'
- if (len(members) - 1) % 2 !=0 and vote_to_not_kick + vote_to_kick == (len(members) - 1):
- if vote_to_kick >= (len(members)-1 / 2):
- members.remove(kicked_player)
- await ctx.send(f"Игрок {kicked_player} кикнут")
- await ctx.send('Загаданное слово: ' + ' '.join(display_word) + '. Сейчас ходит ' + members[
- current_player] + '. Жизней осталось: ' + str(lives))
- running = 'running'
- elif vote_to_not_kick >= (len(members)-1 / 2):
- await ctx.send(f"Игрок {kicked_player} не кикнут")
- await ctx.send('Загаданное слово: ' + ' '.join(display_word) + '. Сейчас ходит ' + members[
- current_player] + '. Жизней осталось: ' + str(lives))
- running = 'running'
- bot.run(token)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement