Случайная ссылка на питоне

Возник такой вопрос,как сделать функцию в питоне,которая будет давать случайную ссылку из уже существующих.Знаний у меня ноль написал такой код.Как исправить и что вообще делать?

def musicplaylist():
    a = str("https://open.spotify.com/playlist/1AecnkFXTY27XtZ6VqzGdZ?si=d336b702d3d14a71")
    b = str("https://open.spotify.com/playlist/0vvXsWCC9xrXsKd4FyS8kM?si=025aa83bc30f412c")
    c = str("https://open.spotify.com/album/260iH4R6MRNcDQ79106Icv?si=vlA69tI6Ro62HYWlSRmcaw")
    d = str("https://open.spotify.com/playlist/3ebHKSjHujS4Tyt2KKP97R?si=d0395579586a4390")
    j=random.choice(a,b,c,d)
    return j

Данный код выдает такие ошибки,вставлял его в другой код как функцию(другой код написан другим человеком,исправно работает,если будет нужен,готов скинуть)

2021-11-29 23:51:05,605 (__init__.py:617 MainThread) ERROR - TeleBot: "Infinity polling exception: musicplaylist() takes 0 positional arguments but 1 was given"
2021-11-29 23:51:05,607 (__init__.py:619 MainThread) ERROR - TeleBot: "Exception traceback:
Traceback (most recent call last):
File "C:\Users\HYPERPC\Python3Bot\v2\vent\lib\site-packages\telebot\__init__.py", line 613, in infinity_polling
self.polling(none_stop=True, timeout=timeout, long_polling_timeout=long_polling_timeout,
File "C:\Users\HYPERPC\Python3Bot\v2\vent\lib\site-packages\telebot\__init__.py", line 660, in polling
self.__threaded_polling(non_stop, interval, timeout, long_polling_timeout, allowed_updates)
File "C:\Users\HYPERPC\Python3Bot\v2\vent\lib\site-packages\telebot\__init__.py", line 722, in __threaded_polling
raise e
File "C:\Users\HYPERPC\Python3Bot\v2\vent\lib\site-packages\telebot\__init__.py", line 682, in __threaded_polling
self.worker_pool.raise_exceptions()
File "C:\Users\HYPERPC\Python3Bot\v2\vent\lib\site-packages\telebot\util.py", line 135, in raise_exceptions
raise self.exception_info
File "C:\Users\HYPERPC\Python3Bot\v2\vent\lib\site-packages\telebot\util.py", line 87, in run
task(*args, **kwargs)
TypeError: musicplaylist() takes 0 positional arguments but 1 was given

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

Автор решения: ПИТОНИСТ версия-3-8
  1. Как уже написали в комментариях, у вас где-то вызывается функция musicplaylist() с одним аргументом.
  2. random.choice() выбирает случайный элемент из списка, а вы используете его для выбора просто случайного элемента. Замените j=random.choice(a,b,c,d) на j=random.choice([a,b,c,d]).
  3. Не понимаю, зачем вы делаете так: a=str("..."), если строка уже в строковом типе. str тут не нужно.
→ Ссылка
Автор решения: CrazyElf

В данном случае вообще нет смысла заводить какие-то переменные, проще и понятнее делать выбор прямо из списка ссылок:

import random

def musicplaylist():
    return random.choice([
      "https://open.spotify.com/playlist/1AecnkFXTY27XtZ6VqzGdZ?si=d336b702d3d14a71",
      "https://open.spotify.com/playlist/0vvXsWCC9xrXsKd4FyS8kM?si=025aa83bc30f412c",
      "https://open.spotify.com/album/260iH4R6MRNcDQ79106Icv?si=vlA69tI6Ro62HYWlSRmcaw",
      "https://open.spotify.com/playlist/3ebHKSjHujS4Tyt2KKP97R?si=d0395579586a4390",
    ])

print(musicplaylist())
→ Ссылка