DISCORD Бот с фановыми функциями и командой + Система опыта с базовой базой данных,
Инструкция по установке на сервер:
Инструкция по установке на сервер:
Зайдите на Discord Developer Portal
- Создай приложение (New Application), перейдите в раздел Bot
- Включите Message Content Intent (чтобы бот видел команды и сообщения)
- Скопируйте токен и вставьте его в последнюю строчку кода вместо YOUR_TOKEN_HERE
- Запустите файл: python main.py
Вам нужен пайтон и библиотека discord.py: pip install discord.py
Код бота фулл:
Python:import discord from discord.ext import commands import random import asyncio # Настройка интентов (разрешений) intents = discord.Intents.default() intents.message_content = True # Нужно для чтения команд intents.members = True # Нужно для работы с пользователями bot = commands.Bot(command_prefix='!', intents=intents) # Простая база данных в памяти (Лучше в будущих перспективах юзать SQLite/JSON) user_xp = {} def add_xp(user_id, amount): if user_id not in user_xp: user_xp[user_id] = 0 user_xp[user_id] += amount return user_xp[user_id] @bot.event async def on_ready(): print(f'Бот {bot.user.name} запущен и работает') await bot.change_presence(activity=discord.Game(name="взлом Пина из Смешариков")) # Система опыта @bot.event async def on_message(message): if message.author.bot: return # Опыт за каждое сообщение xp = add_xp(message.author.id, random.randint(5, 15)) if xp % 100 < 15 and xp >= 100: await message.channel.send(f"⬆️ {message.author.mention}, твой социальный рейтинг растет! Текущий опыт: {xp}") await bot.process_commands(message) # Меджик файв (Магический шар дающий ответы) @bot.command(name="шар") async def magic_ball(ctx, *, question): responses = [ "Бесспорно!", "Мне кажется - да.", "Пока не ясно, попробуй позже.", "Даже не думай.", "Мой ответ - нет.", "Перспективы плохие." ] choice = random.choice(responses) embed = discord.Embed(title="🔮 Магический шар говорит:", description=f"**Вопрос:** {question}\n**Ответ:** {choice}", color=0x3498db) await ctx.send(embed=embed) # Дуэль на костяшках (Не руки) @bot.command(name="дуэль") async def duel(ctx, opponent: discord.Member): if opponent == ctx.author: return await ctx.send("Нельзя стреляться с самим собой, это грустно.") await ctx.send(f"⚔️ {opponent.mention}, тебе брошен вызов от {ctx.author.mention}! У тебя 10 секунд, чтобы принять (напишите 'принимаю').") def check(m): return m.author == opponent and m.content.lower() == 'принимаю' and m.channel == ctx.channel try: await bot.wait_for('message', check=check, timeout=10.0) except asyncio.TimeoutError: return await ctx.send("Оппонент решил воздержаться и не явился на дуэль.") p1_roll = random.randint(1, 100) p2_roll = random.randint(1, 100) result = f"🎲 {ctx.author.name} выбросил: **{p1_roll}**\n🎲 {opponent.name} выбросил: **{p2_roll}**\n\n" if p1_roll > p2_roll: result += f"🏆 Победил {ctx.author.mention}!" elif p2_roll > p1_roll: result += f"🏆 Победил {opponent.mention}!" else: result += "🤝 Ничья! Мир во всем мире ;(" await ctx.send(result) # Очистка чата (для модераторов) @bot.command(name="чистка") @commands.has_permissions(manage_messages=True) async def clear(ctx, amount=5): await ctx.channel.purge(limit=amount + 1) await ctx.send(f"🧹 Удалено {amount} сообщений.", delete_after=3) # Токен в ' ' вставьте bot.run('YOUR_TOKEN_HERE')