SaveText.Ru

Python Bot
  1. import discord
  2. from discord.ext import commands
  3. from discord import utils
  4. from discord.utils import get
  5.  
  6. prefix = '.'
  7. TOKEN = 'NzYwMzgwNzAxMjk0OTg1MjM4.X3LNtg._NaI_Y5IZ0tFvJndcFEE_B2iGu8'
  8. bot = commands.Bot(command_prefix = prefix)
  9. bot.remove_command('help')
  10. global memberss
  11. memberss=[]
  12.  
  13. @bot.event
  14. async def on_ready():
  15.     print("Bot is online")
  16.     await bot.change_presence(status = discord.Status. online, activity = discord.Game('.help') )
  17. global members
  18. members=0
  19.  
  20. #help
  21. @bot.command()
  22. async def help(ctx):
  23.     emb=discord.Embed(title = 'Навигация по командам бота', colour = discord.Color.green())
  24.     emb.add_field(name = '{}clear'. format(prefix), value = 'Очистить сообщение')
  25.     emb.add_field(name = '{}kick'. format(prefix), value = 'Кикнуть игрока')
  26.     emb.add_field(name = '{}ban'. format(prefix), value = 'Забанить игрока')
  27.     emb.add_field(name = '{}unban'. format(prefix), value = 'Разбанить игрока')
  28.     emb.add_field(name = '{}start'. format(prefix), value = 'Начать соббирать лобби')
  29.     emb.add_field(name = '{}join'. format(prefix), value = 'Зайти в лобби')
  30.     emb.add_field(name = '{}lobby'. format(prefix), value = 'Узнать информацию о лобби')
  31.     emb.add_field(name = '{}startgame'. format(prefix), value = 'Старт игры')
  32.     await ctx.send(embed = emb)
  33.  
  34. #clear
  35. @bot.command()
  36. @commands.has_permissions(administrator = True)
  37. async def clear(ctx, amount = 1000):
  38.     await ctx.channel.purge(limit = amount)
  39.  
  40. #kick
  41. @bot.command(pass_context = True)
  42. @commands.has_permissions(administrator = True)
  43. async def kick(ctx, member: discord.Member, *, reason = None):
  44.     emb = discord.Embed(title = 'Кик', colour = discord.Color.orange())
  45.     await ctx.channel.purge(limit=1)
  46.     await member.kick(reason = reason)
  47.     emb.set_author(name = member.name, icon_url= member.avatar_url)
  48.     emb.add_field(name = 'Кикнут', value = 'Кикнут: {}'. format(member.mention))
  49.     await ctx.send(embed = emb)
  50.  
  51. #ban
  52. @bot.command(pass_context = True)
  53. @commands.has_permissions(administrator = True)
  54. async def ban(ctx, member: discord.Member, *, reason = None):
  55.     emb = discord.Embed(title = 'Бан', colour = discord.Color.red())
  56.     await ctx.channel.purge(limit=1)
  57.     await member.ban(reason = reason)
  58.     emb.set_author(name = member.name, icon_url= member.avatar_url)
  59.     emb.add_field(name = ' ', value = 'Забанен: {}'. format(member.mention))
  60.  
  61. #unban
  62. @bot.command(pass_context = True)
  63. async def unban(ctx, *, member):
  64.     await ctx.channel.purge(limit=1)
  65.     banned_users = await ctx.guild.bans()
  66.     for ban_entry in banned_users:
  67.         user = ban_entry.user
  68.         await ctx.guild.unban(user)
  69.         await ctx.send(f'Разбанили {user.mention}')
  70.         return
  71.  
  72. #voice
  73. @bot.command()
  74. async def voice_on(ctx):
  75.     global voice
  76.     channel = ctx.message.author.voice.channel
  77.     voice = get(bot.voice_clients, guild = ctx.guild)
  78.     if voice and voice.is_connected():
  79.         await voice.move_to(channel)
  80.     else:
  81.         voice = await channel.connect()
  82.         await ctx.send(f'Бот присоединяется к каналу: {channel}')
  83.  
  84. #voice leave
  85. @bot.command()
  86. async def voice_off(ctx):
  87.     channel = ctx.message.author.voice.channel
  88.     voice = get(bot.voice_clients, guild = ctx.guild)
  89.     if voice and voice.is_connected():
  90.         await voice.disconnect()
  91.     else:
  92.         voice = await connect.channel()
  93.         await ctx.send(f'Бот покинул канал: {channel}')
  94.  
  95.  
  96. #music
  97.  
  98. #lobby info
  99. @bot.command()
  100. async def lobby(ctx):
  101.     p='Игроки в лобби: '
  102.     for i in range(1, len(memberss)):
  103.         p+=memberss[i]
  104.         p+=' '
  105.     p+='Хост:'+ memberss[0]
  106.     await ctx.send(p)
  107.  
  108. #leave
  109. @bot.command()
  110. async def leave(ctx):
  111.     author = ctx.message.author.mention
  112.     global memberss
  113.     if memberss.count(author)>=1:
  114.         q=str(author)+' '+'вы были удалены из лобби'
  115.         memberss.remove(author)
  116.         print(memberss)
  117.         await ctx.send(q)
  118.  
  119. #start lobby
  120. global t
  121. t=0
  122. @bot.command()
  123. async def start(ctx):
  124.     global memberss
  125.     if len(memberss)>0:
  126.         await ctx.send('Уже есть лобби, присоединяйтесь к лобби командой +join')
  127.     else:
  128.         await ctx.send("Начинаем собирать лобби!")
  129.         global members
  130.         members=0
  131.         global t
  132.         t=1
  133.  
  134. #start
  135. @bot.command()
  136. async def startgame(ctx):
  137.     global memberss
  138.     author = ctx.message.author.mention
  139.     if len(memberss)>3 and memberss[0]==author:
  140.         p='Игра начинается! Игроки: '
  141.         for i in range(1, len(memberss)):
  142.             p+=memberss[i]
  143.             p+=' '
  144.         p+='Хост:'+ memberss[0]
  145.         p+=' Присоединяйтесь к свободному войс чату'
  146.         memberss=[]
  147.         await ctx.send(p)
  148.     elif memberss[0]!=author:
  149.         await ctx.send('Вы не являетесь хостом лобби')
  150.     else:
  151.         await ctx.send('Слишком мало людей')
  152.  
  153. #join
  154. @bot.command()
  155. async def join(ctx):
  156.     global t
  157.     author = ctx.message.author.mention
  158.     if t==1:
  159.         global memberss
  160.         if memberss.count(author)>=1:
  161.             await ctx.send('Вы уже учавствуете в лобби')
  162.         else:
  163.             q=str(author)+' '+'теперь учавтвует в лобби'
  164.             memberss.append(author)
  165.             await ctx.send(q)
  166.         if len(memberss)>3:
  167.             p='В лобби уже' + str(len(memberss)) +'человек. Для начала напишите +startgame'
  168.             await ctx.send(p)
  169.         if len(memberss)==10:
  170.             p='Игра начинается! Игроки: '
  171.             for i in range(1, len(memberss)):
  172.                 p+=memberss[i]
  173.                 p+=' '
  174.             p+='Хост:'+ memberss[0]
  175.             p+=' Присоединяйтесь к свободному войс чату'
  176.             memberss=[]
  177.             await ctx.send(p)
  178.     else:
  179.         await ctx.send('Вы не запустили игру')
  180.  
  181. bot.run(TOKEN)

Share with your friends:

Print