不和谐py中的@ client.command()对我不起作用

时间:2020-06-11 20:55:58

标签: python discord.py

discord.py bot出现了问题,client.event on_message命令对我来说非常有效,但是client.command()不起作用,我尝试重新安装从python到anaconda的所有内容,但它仍然无法正常工作。 (对不起,如果问题和代码混乱,我对编程和stackoverflow还是陌生的)

代码:

import discord
import random
import time
from discord.ext import commands
import discord.utils
songs = []
songs_string = """HaB
LionNorth
Stalingrad
"""
i2 = 0
for song_name in songs_string.splitlines():
    songs.insert(i2, song_name)
    i2 += 1

list1 = []

help = '''
все команды должны начинаться с точки 
dsw сюда ругательство,что бы добавить новое ругательство в sw на время сессии бота
time узнать текущее время
sabaton для получения случайной песни Сабатон (иногда может не работать из-за размера файла)
sw чтобы получить случайную ругань
'''

i = 0
string = f'''ПИДОРАС
ПОШЕЛ НАХУЙ
ДА ТЫ УЕБОК
не интересно,пидор
НАЧАЛЬНИК БЛЯТЬ,ЭТОТ ПИДОРАС ОБОСРАЛСЯ
бля ахуительная история
Я ТВОЙ НАЧАЛЬНИК
КТО БУДЕТ СОСАТЬ
ПОШЕЛ НА РАБОТУ
ЧИСТИ ГОВНО
НИХУЯ НЕ МОЖЕШЬ,ПОШЕЛ НАХУЙ
я с этим гондоном сидеть не буду бля
какие нахуй корабли?
'''
quotes_string = """Недостаточно овладеть премудростью, нужно также уметь пользоваться ею.
Тем, кто хочет учиться, часто вредит авторитет тех, кто учит.
Трудно быть хорошим..
"""
for word in string.splitlines():
    list1.insert(i, word)
    i += 1
restr = ["поговорим-по-душам", "?флудилка?", "⚠правила⚠", "?новости?"]
client = commands.Bot(command_prefix=".")


@client.command()
async def hi(ctx):
    await ctx.send('Hi!')

@client.event
async def on_member_join(member):
    for channel in member.guild.channels:
        if str(channel) == "welcome":
            await channel.send(f"""Welcome to the server {member.mention}""")
@client.event
async def on_message(message):
    if str(message.channel) not in restr:
            if message.content == ".sabaton":
                random.seed(time.time())
                randnum = random.randint(0, len(songs) - 1)
                await message.channel.send(file=discord.File(songs[randnum]))
            elif message.content == ".sw":
                random.seed(time.time())
                randnum = random.randint(0, len(list1) - 1)
                await message.channel.send(list1[randnum].upper())
            elif message.content == ".time":
                await message.channel.send(f"Current time is {time.localtime()}")
            elif message.content == ".help":
                await message.channel.send(help)
            if message.content.startswith(".dsw"):
                msg = message.content.split()
                output = ''
                for word in msg[1:]:
                    output += word
                    output += ' '
                await message.channel.send(f"{output} было добавлено в список ругательств на эту сессию")
                list1.append(output)`





client.run("token here")

1 个答案:

答案 0 :(得分:3)

在使用on_message事件时,如果您打算使用命令装饰器,则需要使机器人进入process_commands()

@client.event
async def on_message(message):
    await client.process_commands(message)
    # rest of your on_message code

参考: