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")
答案 0 :(得分:3)
在使用on_message
事件时,如果您打算使用命令装饰器,则需要使机器人进入process_commands()
:
@client.event
async def on_message(message):
await client.process_commands(message)
# rest of your on_message code
参考:
on_message
Bot.process_commands()
-“没有此协程,将不会触发任何命令。如果您选择覆盖on_message()
事件,则也应调用此协程。”