Как сделать так,чтобы бот анализировал конкретные каналы?
Я хочу сделать так,чтобы человек не мог отправить больше 1 сообщения в категорию из 3-х каналов. Вот код:
nabor1_channel_id = 970768863622995968
nabor2_channel_id = 970768884858761247
nabor3_channel_id = 970768911941398579
nabor = [nabor1_channel_id,
nabor2_channel_id, nabor3_channel_id]
@bot.listen('on_message')
async def on_message_four(message):
if message.channel.id in nabor:
if message.author == bot.user:
pass
else:
if len(message.content) > 1: # проблема в этой строчке
await message.delete()
await message.channel.send(f"Не спамь!")
Как сделать так, чтобы message.content распространялся только на 3 выделенных мной канала?
Надеюсь,что вопрос вам понятен
Ответы (1 шт):
Автор решения: Universall
→ Ссылка
message.content возвращает текст сообщения, а не количество отправленных сообщений с данным тексом. Вопрос немного непонятен, так что я отвечу сразу на несколько:
1: Как сделать так, чтобы человек мог отправить только 1 сообщение в канал?
ban_list = []
channels = []
async def on_message(message: discord.Message):
if message.channel.id in channels:
if not message.author.bot:
# Если уже было сообщение, у котороего channel == message.channel и author == message.author, то...
if [x for x in ban_list if x["channel"] == message.channel and x["user"] == message.author]:
await message.channel.send(f"Не спамь!", delete_after=5)
await message.delete()
else:
# Если такого сообщения не было, то добавить новое сообщение в ban_list сообщений
ban_list.append({"channel": message.channel, "user": message.author})
2: Как сделать так, чтобы человек мог отправить только 1 сообщение с определённым текстом в канал?
ban_list = []
channels = []
async def on_message(message: discord.Message):
if message.channel.id in channels:
if not message.author.bot:
# Если уже было сообщение, у котороего channel == message.channel, author == message.author и content == message.content, то...
if [x for x in self.ban_list if x["channel"] == message.channel and x["user"] == message.author and x["content"] == message.content]:
await message.channel.send(f"Не спамь!", delete_after=5)
await message.delete()
else:
# Если такого сообщения не было, то добавить новое сообщение в ban_list сообщений
self.ban_list.append({"channel": message.channel, "user": message.author, "content": message.content})