MAGIC KoT
MAGIC KoT

Reputation: 5

Discord.py - Bot does not respond to commands

When I write the command "! LVL" The bot just doesn't react in any way. The teams used to work. I changed something and now he does not react to them. In addition, before, if I wrote a command incorrectly, then in the console the bot gave an error that such a command does not exist. Now he does not respond to more than one command, even to the built-in one !help

But all events work correctly.

import discord
from discord.ext import commands
from discord.utils import get
from pymongo import MongoClient
from datetime import datetime
import asyncio
import time
import os

intents = discord.Intents.default()
intents.members = True
intents.messages = True
intents.voice_states = True
intents.integrations = True
intents.invites = True
intents.presences = True
intents.webhooks = True
client = commands.Bot(command_prefix = "!", intents=intents)
cluster = MongoClient("mongodb://127.0.0.1:27017")
colluser = cluster.chill.user
collclan = cluster.chill.clans
collshop = cluster.chill.shop


@client.event
async def on_ready():
    print("Bot connected to the server")

    for guild in client.guilds:
        for member in guild.members:
            post = {
                "_id": member.id,
                "name": member.mention,
                "user": member.name,
                "inventory": [],
                "warms": 0,
                "mute": 0,
                "voice_activ": 0,
                "localban": 0,
                "register": member.created_at,
                "onservfrom": member.joined_at,
                "clan": 0,
                "marry": 0,
                "love": 0,
                "childs": [],
                "balance": 0,
                "bank": 0,
                "rep": 0,
                "cdxp": 0,
                "cnxp": 0,
                "dxp": 0,
                "nxp": 0,
                "cdbal": 0,
                "cdlvl": 1,
                "cnlvl": 1,
                "dlvl": 1,
                "nlvl": 1
            }

            if colluser.count_documents({"_id": member.id}) == 0:
                colluser.insert_one(post)

@client.event
async def on_guild_role_create(role):
    print("new role created")
    post = {
        "_id": role.id,
        "titel": "none",
        "cp": [],
        "exp": 0,
        "lvl": 0,
        "maxcp": 7,
        "bank": 0
    }

    if collclan.count_documents({"role_id": role.id}) == 0:
        collclan.insert_one(post)

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.webhook_id:
        return
    f1 = colluser
    f2 = colluser

    f4 = colluser
    user = message.author
    data = colluser.find_one({"_id": user.id})
    dtn = datetime.today().strftime("%I:%M %p")
    await asyncio.sleep(1)
    day = data["dxp"]
    dark = data["nxp"]
    dl = data["dlvl"]
    nl = data["nlvl"]
    balanc = data["balance"]
    dexp = 500 + 100 * dl
    nexp = 500 + 100 * nl
    if not data["cdbal"] == "0":
        return
    if len(message.clean_content) >= 15:
        print("Сообщение длинее 15 символов")
        bal = 6
        exp = 6
    if len(message.clean_content) <= 14:
        print("Сообщение короче 15 символов")
        bal = 3
        exp = 3
    if any(("AM" in dtn) for AM in dtn):
        print("time is AM")
        colluser.update_one({"_id": user.id},
            {"$set": {"dxp": + exp}})
    if any(("PM" in dtn) for PM in dtn):
        print("time is PM")
        colluser.update_one({"_id": user.id},
        {"$set": {"nxp": + exp}})
    if data["dxp"] >= 500 + 100 * dl:
        print(f"Новый уровень светлой стороны у пользователя {user}")
        colluser.update_one({"_id": user.id},
            {"$set": {"dlvl": dl + 1}})
        colluser.update_one({"_id": user.id},
            {"$set": {"dxp": day - dexp}})
    if data["nxp"] >= 500 + 100 * nl:
        print(f"Новый уровень темной стороны у пользователя {user}")
        colluser.update_one({"_id": user.id},
            {"$set": {"nlvl": nl + 1}})
        colluser.update_one({"_id": user.id},
            {"$set": {"nxp": dark - nexp}})
    print(f"Пользователь {user} написал сообшение")
    f1.update_one({"_id": user.id},
        {"$set": {"balance": balanc + bal}})
    print("F1")
    f2.update_one({"_id": user.id},
        {"$set": {"cdbal": "1"}})
    print("F2")
    await asyncio.sleep(40)
    print("F3")
    f4.update_one({"_id": user.id},
        {"$set": {"cdbal": "0"}})
    print("F4")

@client.event
async def on_voice_state_update(member, before, after):
    data = colluser.find_one({"_id": member.id})
    day = data["dxp"]
    dark = data["nxp"]
    dl = data["dlvl"]
    nl = data["nlvl"]
    dexp = 500 + 100 * dl
    nexp = 500 + 100 * nl
    guild = client.guilds[0]
    guild_id = 830565202276909056
    if before.channel is None and after.channel is not None:
        print("1")
        t1 = time.time()
        colluser.update_one({"_id": member.id},
            {"$set": {"voice_tim1": t1}})
    elif before.channel is not None and after.channel is None:
        dtn = datetime.today().strftime("%I:%M %p")
        t1 = data["voice_tim1"]
        voice_activ1 = data["voice_activ"]
        balance = data["balance"]
        t2 = time.time()
        tim = t2-t1
        print("0")
        print(dtn)
        colluser.update_one({"_id": member.id},
            {"$set": {"voice_activ": voice_activ1 + tim}})
        colluser.update_one({"_id": member.id},
            {"$set": {"balance": balance + tim / 12}})
        if any(("AM" in dtn) for AM in dtn):
            print("time is AM")
            colluser.update_one({"_id": member.id},
                {"$set": {"dxp": day + tim / 4}})
        if any(("PM" in dtn) for PM in dtn):
            print("time is PM")
            colluser.update_one({"_id": member.id},
                {"$set": {"nxp": dark + tim / 4}})
        if data["dxp"] >= 500 + 100 * dl:
            colluser.update_one({"_id": member.id},
                {"$set": {"dlvl": dl + 1}})
            colluser.update_one({"_id": member.id},
                {"$set": {"dxp": day - dexp}})
        if data["nxp"] >= 500 + 100 * nl:
            colluser.update_one({"_id": member.id},
                {"$set": {"nlvl": nl + 1}})
            colluser.update_one({"_id": member.id},
                {"$set": {"nxp": dark - nexp}})
        if dl >> nl:
            role_id1 = 869267468047220856
            role_id2 = 869267490851676200
            role1 = guild.get_role(role_id1)
            role2 = guild.get_role(role_id2)
            await member.add_roles(role1, reason="Роль выдана за превоблодания уровня света")
            await member.remove_roles(role2, reason="Роль снята за превоблодания уровня света")
        if nl >> dl:
            role_id1 = 869267468047220856
            role_id2 = 869267490851676200
            role1 = guild.get_role(role_id1)
            role2 = guild.get_role(role_id2)
            await member.add_roles(role2, reason="Роль выдана за превоблодания уровня тьмы")
            await member.remove_roles(role1, reason="Роль снята за превоблодания уровня тьмы")

@client.event
async def on_member_join(member):
    post = {
        "_id": member.id,
        "name": member.mention,
        "user": member.name,
        "inventory": [],
        "warms": 0,
        "mute": 0,
        "voice_activ": 0,
        "localban": 0,
        "register": member.created_at,
        "onservfrom": member.joined_at,
        "clan": 0,
        "marry": 0,
        "love": 0,
        "childs": [],
        "balance": 0,
        "bank": 0,
        "xp": 0,
        "dxp": 0,
        "nxp": 0,
        "cdbal": 0,
        "lvl": 1,
        "dlvl": 1,
        "nlvl": 1
    }

    if colluser.count_documents({"_id": member.id}) == 0:
        colluser.insert_one(post)

@client.command()
async def lvl(ctx, member: discord.Member = None):
    print("test")
    if member is None:
        member = message.author
    else:
        data = colluser.find_one({"_id": member.id})
        nnexp = 500 + 100 * data["nlvl"]
        ndexp = 500 + 100 * data["dlvl"]
        dnnexp = nnexp - data["nxp"]
        dndexp = dndexp -data["dxp"]
        if data["voice_activ"] >= 60:
            vcm = data["voice_activ"] / 60
            if vcm >= 60:
                vch = vcm / 60
                if vch >= 24:
                    vcd = vch /24
                    vca = vch
                else:
                    vca = vch
                    t = "часов"
            else:
                vca = vcm
                t = "минут"
        else:
            t = "Секунд"
            vca = data["voice_activ"]
        lvleb = discord.Embed(colour=role.color)
        lvleb.set_author(name=f"Профиль пользователя: {member}", icon_url=member.avatar_url)
        lvleb.add_field(name="Уровень света", value=data["nlvl"], inline=True)
        lvleb.add_field(name="Уровень тьмы", value=data["dlvl"], inline=True)
        lvleb.add_field(name="Опыт света", value=f"{data['nlvl']} / {dnnexp}", inline=True)
        lvleb.add_field(name="Опыт тьмы", value=f"{data['dlvl']} / {dndexp}", inline=True)
        lvleb.add_field(name="Время в войсе", value=f"{vca}{t}", inline=False)
        await ctx.send(embed=lvleb)

@client.event
async def on_command_error(ctx, error):
    print(error)

    if isinstance(error, commands.UserInputError):
        await ctx.send(embed = discord.Embed(
            description = f"Правильное использование команды: `{ctx.prefix}{ctx.command.name}` ({ctx.command.brief}): `{ctx.prefix}{ctx.command.usage}`"
        ))


client.run("TOKEN")

Upvotes: 0

Views: 116

Answers (1)

moinierer3000
moinierer3000

Reputation: 1979

Add an await client.process_commands(message) at the end of your on_message event

https://discordpy.readthedocs.io/en/latest/faq.html#why-does-on-message-make-my-commands-stop-working

Upvotes: 1

Related Questions