Ну лааадно... Вот мое решение, самое простое... Вероятность сам подкрутишь.
import asyncio
import random
import discord
from discord.ext import commands
intents = discord.Intents.all()
client = commands.Bot(command_prefix='!', intents=intents)
w1 = [0,1,0,0,0,1] #(можешь еще добавить, сколько душе угодно(0, 2, 3, 4... - Не даст роль, 1 - даст роль))
@client.event
async def on_message(message):
if message.channel != ЗДЕСЬ ID ТВОЕГО "ОПРЕДЕЛЕННОГО" КАНАЛА:
return
if message.author == py.user: # (проверка на сообщение от бота(игнорируем))
return
w2 = random.choice(w1)
if w2 == 1:
guild = message.guild
channel = message.channel
user = message.author # (чисто для удобства упрощаем вид)
await guild.get_member(user.id).add_roles(guild.get_role(А ЗДЕСЬ ID РОЛИ))
await channel.send('ТЫ ПОПАЛ В ПОДВАЛ, ХА-ХА-ХА')
await asyncio.sleep(120)
Вроде ошибок не вижу, если будут - отпишешь здесь...
И.. Так сказать, на будущее. Твой вопрос решается 2-3 запросами в гугл.... Если горит - делай.