Проблема с генератором случайных паролей на discord.py

Пытаюсь сделать генератор паролей для дискорд бота на pyhton 3. Имеется вот такой код:

import discord
import json
import requests
import random
import string

s1 = string.ascii_letters
s2 = string.digits
s3 = string.punctuation

s = s1 + s2 + s3
pas = ""

for i in range(15):
    p = random.choice(s)
    pas += p
    if message.author == bot.user:
        return
    if message.content.startswith('!pass'):
        await message.channel.send(f"Пароль {pas}")

При команде !pass генерируется и выдается один пароль. При последующей команде !pass выдается этот же пароль. Как можно сделать так чтобы при команде !pass выдавался уже другой пароль?


Ответы (3 шт):

Автор решения: Victor VosMottor

Вот короч функция:

from random import choices
import string
def genpass(length):
    return ''.join(choices(string.ascii_letters + s2 = string.digits + s3 = string.punctuation, k=length))
→ Ссылка
Автор решения: Alex Progd

Честно говоря, не разбираюсь в модуле discord, но генератор паролей можно реализовать так, затем просто запихать в функцию и сделать выполнение этой функции при вводе команды.

import random
import string

n = 0
l = ""
ascii = string.ascii_letters + str(string.digits)
while n <= 8: # где 8 - количество символов в нике
    l += random.choice(ascii)
    n += 1
print(l)
→ Ссылка
Автор решения: gil9red

Попробуйте:

import random
import string

def get_pass() -> str:
    letters = string.ascii_letters + string.digits + string.punctuation
    return "".join(random.choice(letters) for _ in range(15))

PS. еще можно вместо choice использовать функцию random.choices выполнить, тогда не нужен будет for _ in range(15), т.к. в choices можно передать параметр k, что указывает количество случайных значений

→ Ссылка