Включение и выключение команды
Вот у меня есть код для автомодерации плохих слов
#Фильтр плохих слов
@bot.event
async def on_message(message):
if message.author == bot.user: return # если сообщение от бота - игнорируем
banwords = ["хуй", "блядина", "пизда", "пидр", "пидор", "пидар", "пидорас", "пидарас", "гандон", "сука", "даун", "дибил", "сучка", "ебать", "еблан", "ахуеть", "ебать", "нихуя", "пиздец", "блядь", "блять", "член", "залупа"]
for word in banwords:
if word in message.content.lower():
try:
await message.delete()
except:
pass
await message.channel.send(f'{message.author.mention}, мат запрещен!')
break
И я хочу сделать так, чтобы эту автомодерацию можно было включить либо выключить командой, по типу >auto_on и после этого автомодерация будет работать
Ответы (1 шт):
P.S: Это было сложно, но я сделал это.
Здравствуйте, уважаемый halflite. Сейчас я вам попытаюсь максимально помочь, а так-же разъяснить, что надо сделать, что добавить, а что убрать.
Создаем главное условие вашей идеи.
Где угодно в коде добавляем такую вещь как: auto_moderation_on = 'true'. Это будет отвечать за нашу систему модерирования сообщений. Лично я поставил это перед кодом нашего ивента и команды.
Начинаем кодить @bot.event
В начале кода добавляем три вот таких строчки:
if message.content.startswith('вашпрефиксздесь'):
await client.process_commands(message)`
else:
Следующим действием я переместил список наших плохих слов перед проверкой на auto_moderation_on является True, или False. Вот как это выглядит:
banwords = ["тут очень плохие слова!"]
if banwordson == 'true':
Код, который у вас там, т.е. где бот пытается удалить сообщение оставляем таким-же, как и у нас было. Теперь в конце мы добавляем две строчки:
elif banwordson == 'false':
pass
Вот как будет выглядить наш @bot.event:
@bot.event
async def on_message(message):
if message.content.startswith('lv.'): await client.process_commands(message)
else:
banwords = ["хуй", "блядина", "пизда", "пидр", "пидор", "пидар", "пидорас", "пидарас", "гандон", "сука", "даун", "дибил", "сучка", "ебать", "еблан", "ахуеть", "ебать", "нихуя", "пиздец", "блядь", "блять", "член", "залупа"]
if banwordson == 'true':
if message.author == bot.user: return
for word in banwords:
if word in message.content.lower():
try:
await message.delete()
except:
pass
await message.channel.send(f'{message.author.mention}, мат запрещен!')
break
elif banwordson == 'false':
pass
Создаем команду включения-и-выключения автоматической модерации сообщений.
Создаем нашу основу, впринципе это ничего обычного.
@bot.command(aliases=['automoder', 'moder', 'mat'])
@commands.has_role("ВнесиЗдесьРолиКоторыеМогутИспользоватьКоманды")
async def automoderation(ctx):
Далее мы добавляем такую вещь, как global auto_moderation_on.
И теперь мы проверяем, если auto_moderation_on = True, то мы выключаем, а если наоборот, ну вы поняли.
@bot.command(aliases=['automoder', 'moder', 'mat'])
@commands.has_role("ВнесиЗдесьРолиКоторыеМогутИспользоватьКоманды")
async def automoderation(ctx):
global banwordson
if banwordson == 'true':
await ctx.reply('Здравствуйте, уважаемый администратор! Выключаю автоматическую модерацию...')
banwordson = 'false'
else:
await ctx.reply('Здравствуйте, уважаемый администратор! ~~Выключаю~~ Включаю автоматическую модерацию...')
banwordson = 'true'
Что у нас получается в итоге?
Теперь, вы можете включать и выключать автоматическую модерацию мата!
Полный код
banwordson = 'true'
@bot.event
async def on_message(message):
if message.content.startswith('ваш префикс тут'): await client.process_commands(message)
else:
banwords = ["хуй", "блядина", "пизда", "пидр", "пидор", "пидар", "пидорас", "пидарас", "гандон", "сука", "даун", "дибил", "сучка", "ебать", "еблан", "ахуеть", "ебать", "нихуя", "пиздец", "блядь", "блять", "член", "залупа"]
if banwordson == 'true':
if message.author == bot.user: return
for word in banwords:
if word in message.content.lower():
try:
await message.delete()
except:
pass
await message.channel.send(f'{message.author.mention}, мат запрещен!')
break
elif banwordson == 'false':
pass
@bot.command()
async def automoderation(ctx):
global banwordson
if banwordson == 'true':
await ctx.reply('Здравствуйте, уважаемый администратор! Выключаю автоматическую модерацию...')
banwordson = 'false'
else:
await ctx.reply('Здравствуйте, уважаемый администратор! ~~Выключаю~~ Включаю автоматическую модерацию...')
banwordson = 'true'
Спасибо за то, что дочитали до этого момента. Удачного вам вечера)