
Recherche avancée
Médias (91)
-
Collections - Formulaire de création rapide
19 février 2013, par
Mis à jour : Février 2013
Langue : français
Type : Image
-
Les Miserables
4 juin 2012, par
Mis à jour : Février 2013
Langue : English
Type : Texte
-
Ne pas afficher certaines informations : page d’accueil
23 novembre 2011, par
Mis à jour : Novembre 2011
Langue : français
Type : Image
-
The Great Big Beautiful Tomorrow
28 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Texte
-
Richard Stallman et la révolution du logiciel libre - Une biographie autorisée (version epub)
28 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Texte
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (98)
-
Use, discuss, criticize
13 avril 2011, parTalk to people directly involved in MediaSPIP’s development, or to people around you who could use MediaSPIP to share, enhance or develop their creative projects.
The bigger the community, the more MediaSPIP’s potential will be explored and the faster the software will evolve.
A discussion list is available for all exchanges between users. -
Ajouter des informations spécifiques aux utilisateurs et autres modifications de comportement liées aux auteurs
12 avril 2011, parLa manière la plus simple d’ajouter des informations aux auteurs est d’installer le plugin Inscription3. Il permet également de modifier certains comportements liés aux utilisateurs (référez-vous à sa documentation pour plus d’informations).
Il est également possible d’ajouter des champs aux auteurs en installant les plugins champs extras 2 et Interface pour champs extras. -
Modifier la date de publication
21 juin 2013, parComment changer la date de publication d’un média ?
Il faut au préalable rajouter un champ "Date de publication" dans le masque de formulaire adéquat :
Administrer > Configuration des masques de formulaires > Sélectionner "Un média"
Dans la rubrique "Champs à ajouter, cocher "Date de publication "
Cliquer en bas de la page sur Enregistrer
Sur d’autres sites (5616)
-
Evolution #4391 (Nouveau) : Squelettes de la dist : améliorer le markup et passer à BEM
13 octobre 2019, par tcharlss (*´_ゝ`)Hello,
En voulant créer des nouveaux thèmes pour les squelettes de la dist, j’ai rencontré des limitations dûes au markup actuel.
Par exemple, certains éléments sans classe sont impossibles à cibler, il y a des retours lignes en dur, etc.
En certains endroits, cela limite pas mal les possibilités.
J’aimerais lancer un petit refactoring du markup afin qu’il soit plus facile de thémer les squelettes et de maintenir les styles.Il s’agirait principalement d’améliorer la nomenclature des classes, en changeant le moins possible le markup afin que les thèmes actuels restent compatibles (ou au prix d’adaptations minimes).
On ajouterait donc des nouvelles classes, sans supprimer les classes actuelles (dans un 1er temps tout du moins ?).
Cela pourrait être l’occasion de passer à la méthodologie BEM pour la nomenclature des classes.Exemple n°1¶
Exemple avec le copyright et les liens dans le footer.
Actuellement, il n’y a pas de classe autour du copyright, les liens ne sont pas encapsulés dans un conteneur, et les séparateurs « | » n’ont pas de classe n’ont plus.
Il est donc quasiment impossible de changer l’agencement général, de changer l’apparence des séparateurs, etc.<span class="CodeRay"><span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">colophon</span><span class="delimiter">"</span></span><span class="tag">></span>
2009 - 2019 Thèmes SPIP
<span class="tag"><br /></span>
<span class="tag">span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">contents</span><span class="delimiter">"</span></span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">...</span><span class="delimiter">"</span></span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">first</span><span class="delimiter">"</span></span><span class="tag">></span>Plan du site<span class="tag"></span> | <span class="tag">span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">ecrire/</span><span class="delimiter">"</span></span><span class="tag">></span>Espace privé<span class="tag"></span> | <span class="tag">span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">...</span><span class="delimiter">"</span></span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">nofollow</span><span class="delimiter">"</span></span><span class="tag">></span>Se déconnecter<span class="tag"></span> |
<span class="tag">span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">nofollow</span><span class="delimiter">"</span></span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">...</span><span class="delimiter">"</span></span><span class="tag">></span>Contact<span class="tag"></span> | <span class="tag">span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">...</span><span class="delimiter">"</span></span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">alternate</span><span class="delimiter">"</span></span> <span class="attribute-name">title</span>=<span class="string"><span class="delimiter">"</span><span class="content">Syndiquer tout le site</span><span class="delimiter">"</span></span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">last</span><span class="delimiter">"</span></span><span class="tag">></span>RSS<span class="entity">&nbsp;</span>2.0<span class="tag"></span>
<span class="tag"></span>
</span></span></span></span></span></span></span>Voici ce que ça pourrait donner en refactorisant :
- Le copyright est encapsulé dans un span
- Les liens sont considérés comme faisant partie d’un menu, et sont donc encapsulés dans un composant « menu »
- Les séparateurs sont fait en CSS, pas en dur dans le HTML
<span class="CodeRay"><span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">colophon</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">colophon__coyright</span><span class="delimiter">"</span></span><span class="tag">></span>2009 - 2019 Thèmes SPIP<span class="tag"></span></span>
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">colophon__menu</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">menu menu_footer</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">menu__item menu__item_plan</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag">span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">...</span><span class="delimiter">"</span></span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">menu__link first</span><span class="delimiter">"</span></span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">contents</span><span class="delimiter">"</span></span><span class="tag">></span>Plan du site<span class="tag"></span>
<span class="tag"></span>
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">menu__item menu__item_backoffice</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag">span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">...</span><span class="delimiter">"</span></span><span class="tag">></span>Espace privé<span class="tag"></span>
<span class="tag"></span>
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">menu__item menu__item_logout</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag">span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">...</span><span class="delimiter">"</span></span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">menu__link</span><span class="delimiter">"</span></span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">nofollow</span><span class="delimiter">"</span></span><span class="tag">></span>Se déconnecter<span class="tag"></span>
<span class="tag"></span>
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">menu__item menu__item_contact</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag">span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">...</span><span class="delimiter">"</span></span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">menu__link</span><span class="delimiter">"</span></span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">nofollow</span><span class="delimiter">"</span></span><span class="tag">></span>Contact<span class="tag"></span>
<span class="tag"></span>
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">menu__item menu__item_rss</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag">span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">...</span><span class="delimiter">"</span></span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">menu__link last</span><span class="delimiter">"</span></span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">alternate</span><span class="delimiter">"</span></span> <span class="attribute-name">title</span>=<span class="string"><span class="delimiter">"</span><span class="content">Syndiquer tout le site</span><span class="delimiter">"</span></span><span class="tag">></span>RSS<span class="entity">&nbsp;</span>2.0<span class="tag"></span>
<span class="tag"></span>
<span class="tag"></span>
<span class="tag"></span>
<span class="tag"></span>
</span></span></span></span></span></span></span></span></span></span></span></span></span></span>Avec ça, on peut faire beaucoup plus de choses : afficher le copyright et le menu côte-à-côte ou l’un sous l’autre, afficher le menu à l’horizontale ou à la verticale, choisir l’apparence des séparateurs, etc.
Exemple n°2¶
Autre exemple avec les résumés d’articles.
<span class="CodeRay"><span class="tag">span> <span class="attribute-name">dir</span>=<span class="string"><span class="delimiter">"</span><span class="content">ltr</span><span class="delimiter">"</span></span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">hentry clearfix text-left</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag"><strong></strong></span>
<span class="tag">span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">...</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag">span> <span class="attribute-name">src</span>=<span class="string"><span class="delimiter">"</span><span class="content">...</span><span class="delimiter">"</span></span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">spip_logo</span><span class="delimiter">"</span></span> <span class="attribute-name">alt</span>=<span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span> <span class="attribute-name">width</span>=<span class="string"><span class="delimiter">"</span><span class="content">150</span><span class="delimiter">"</span></span> <span class="attribute-name">height</span>=<span class="string"><span class="delimiter">"</span><span class="content">185</span><span class="delimiter">"</span></span><span class="tag">></span>
Joie entourée d’angoisses (1)
<span class="tag"></span>
<span class="tag"></span>
<span class="tag"><br /></span><span class="tag"><small></small></span>6 mai 2009, par Victor Hugo<span class="tag"></span>
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">introduction entry-content</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag"><p></p></span>
Lorem ipsum<span class="entity">&nbsp;</span>(...)
<span class="tag"></span>
<span class="tag"></span>
<span class="tag"></span>
</span></span></span></span></span>En refactorisant :
- Le composant de base est nommé « resume », et on voit qu’il s’agit d’une variante « article ».
- Tous les éléments ont une classe.
- Le titre est encapsulé dans un
<h3></h3>
plutôt qu’un<strong></strong>
. - L’image est sortie du titre, et sa largeur n’est pas limitée à 150px (ça se ferait en CSS).
<span class="CodeRay"><span class="tag">span> <span class="attribute-name">dir</span>=<span class="string"><span class="delimiter">"</span><span class="content">ltr</span><span class="delimiter">"</span></span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">resume resume_article hentry clearfix text-left</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag">span> <span class="attribute-name">src</span>=<span class="string"><span class="delimiter">"</span><span class="content">...</span><span class="delimiter">"</span></span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">resume__logo spip_logo</span><span class="delimiter">"</span></span> <span class="attribute-name">alt</span>=<span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span> <span class="attribute-name">width</span>=<span class="string"><span class="delimiter">"</span><span class="content">960</span><span class="delimiter">"</span></span> <span class="attribute-name">height</span>=<span class="string"><span class="delimiter">"</span><span class="content">480</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">resume__title</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag">span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">...</span><span class="delimiter">"</span></span><span class="tag">></span>
Joie entourée d’angoisses (1)
<span class="tag"></span>
<span class="tag"></span>
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">resume__publication</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">resume__date</span><span class="delimiter">"</span></span><span class="tag">></span>6 mai 2009<span class="tag"></span></span><span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">sep</span><span class="delimiter">"</span></span><span class="tag">></span>,<span class="tag"></span></span> <span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">resume__author</span><span class="delimiter">"</span></span><span class="tag">></span>par Victor Hugo<span class="tag"></span></span>
<span class="tag"></span>
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">resume__content introduction entry-content</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag"><p></p></span>
Lorem ipsum<span class="entity">&nbsp;</span>(...)
<span class="tag"></span>
<span class="tag"></span>
<span class="tag"></span>
</span></span></span></span></span></span></span>Voilà, ce ne sont que des exemples et non pas des propositions définitives.
C’est juste pour montrer la direction dans laquelle aller.HTML5¶
Il est tentant de vouloir en profiter pour passer en HTML5, mais je préfère laisser cet aspect à part (il y a déjà des tickets dessus je pense).
Français/anglais ?¶
Actuellement pour la nomenclature des classes, il y a un mélange de français et d’anglais. Personnellement, ça ne me dérange pas :)
J’ai arrêté d’essayer de tout franciser à tout prix, je préfère partir sur une base en anglais, avec quelques éléments en français quand il n’y a a pas le choix (par exemple quand on fait référence aux objets spip : breve, rubrique, etc.).Cahier des charges¶
- Faire en sorte que les thèmes existants restent globalement compatibles (moyennant peu d’adaptations).
- Passer la nomenclature des classes à BEM.
- Ajouter des classes sur tous les éléments n’en ayant pas.
- Retirer les retours ligne en dur :
<br />
. - Travailler dans une branche nommée « bem » du dépôt git : https://git.spip.net/SPIP/dist/
- Pas de HTML5 pour l’instant.
- Classes en english avec des exceptions en français
-
Nomenclature #4626 : Renommer le menu "Squelettes"
3 mai 2021, par RastaPopoulos ♥Pfiou voilà, je suis allé voir chaque page de chacun des plugins qui s’insère actuellement pour faire le point !
Mise en page¶
- ACS : comme le noizetier, mise en page à partir de blocs
- Campagnes : pour la gestion de encarts à insérer ensuite dans la mise en page (ensuite dans chaque encart on gère les campagnes de bandeaux, mais le menu lui c’est pour aller à la gestion des encarts), pourrait éventuellement virer ailleurs en reformulant des choses
- Comments : config du mode de mise en page des commentaires (threads ou pas, etc)
- Compositions : liste les variantes de mise en page pour chaque type de contenu
- Eléments : de la mise en page sur les contenus (comme le noizetier, et n’a d’ailleurs plus trop d’intérêt depuis plusieurs années que le noizetier sait aussi configurer des blocs pour tel contenu précis, pas que en global)
- eva-web-bonus eva-web-habillage eva-web-install eva-web-mentions : configuration de la mise en page ou des styles du squelette Eva
- Kaye : pour configurer la mise en page du cahier de texte
- menu_langues_liens : configurer la manière d’afficher le changement de langue
- noizetier : mettre en page le site entier par petits blocs
- porte_plume_enluminures_typographiques : configure la mise en page des textes de contenus suivant les nouvelles syntaxes
- seminaire : configuration de mise en page je crois, mais sinon ça devrait aller juste dans SVP
- sociaux : configure quels liens et leur affichage
- spip_visuels : configurer les rôles de visuels (pourrait peut-être aller ailleurs, et surtout remplacé par Rôles de documents bien plus pérenne car basé sur les documents existants)
- squelettes_par_mots_cle : un peu un ancêtre de Compositions, mettre en page des contenus avec un autre squelette suivant un mot-clé
- switcher : très vieille contrib, configure si on affiche le switcher de squelette (donc de mise en page !), mais c’est juste une config globale une unique fois, donc pourrait parfaitement être dans SVP uniquementNavigation¶
- Court-circuit : change le comportement des liens pour certaines rubriques pour aller à un article interne directement
- exclure_secteur : masque des secteurs entiers, mais pourrait aller dans Publication, je crois, puisque ça dépublie par défaut littéralement des branches
- menus : créer et remplir les menus de navigationStyles et comportement d’affichage¶
- Adaptive images : taille des images, lazyload ou pas, styles des previews
- cloudzoom : un peu comme modalbox, configurer les images zoomables
- fontawesome5 : sert juste à voir les icones existantes
- forkawesome : pareil
- Links : configure le style des liens externes et comment les afficher quand on clique
- mediaspip_player : configurer l’apparence du lecteur
- picto : comme fontawesome, sert juste à voir les icones existantes
- player : choix du lecteur audio (conditionnant essentiellement son affichage)
- rainette : configure l’affichage de la zone météo
- recherche_mots_cles : pour configurer comment s’affiche (mais ce plugin n’est plus vraiment maintenu pour l’instant et cette page toujours en vieux exec PHP)
- refbase : configure la manière d’afficher les bibliographies
- sjcycle : configure l’affichage du carrousel
- slick : configure l’affichage du carrousel
- timecircles : configure l’affichage des timers
- tooltip : configure l’affichage des infobulles
- videos : configure l’affichage des vidéos (mais de nos jours on utilise plutôt oEmbed)
- w3css : configurer l’apparence graphique en choisissant le thème du frameworkÀ virer ailleurs¶
- champs_extras_synchronisation
- Chosen : devrait virer complètement et être juste dans SVP, ou à la limite dans Configuration : c’est un truc qu’on configure une unique fois en gros, ce n’est pas à retrouver en permanence
- comarquage : la dernière version du plugin ne s’insère plus donc sans objet
- dublin_core : il s’agit de SEO/indexation/meta infos dans les métas du site et c’est juste la page de config général du plugin : soit juste SVP soit Configurer (soit Publication ? trouver où regrouper tous les trucs SEO, métas infos ?)
- mathjax : aucun rapport ni squelette ni mise en page, c’est pour configurer comment le script JS est appelé CDN ou en local. En plus cette page ne devrait même pas exister, car CDN tierce on n’en veut pas normalement dans SPIP par défaut, le JS devrait toujours être interne au site
- select2 : exactement comme Chosen, n’a pas à être retrouvé en permanence dans les menus, ça se configure une fois à l’installation
- seo : trouver un autre endroit Publication ou Configuration, c’est de la méta information, voire juste SVP si c’est que la config générale à faire une fois
- skeleditor : menu Développement !
- xray : menu Développement !
- zinit : j’ai pas tout compris mais j’ai l’impression que c’est pour aider les intégrateurices donc du dev donc Développement
- xiti : statistiques, mais si config globale une unique fois : dans SVP uniquement, à la limite dans Configuration -
Command raised an exception : NameError : name 'player' is not defined
20 mars 2023, par baartysI finally got myself a hosting for my project, but got into an error and I don't know how to resolve it.
I ran command !play to start streaming in vc, but I got this error :


2023-03-19 18:36:04 INFO discord.client logging in using static token
2023-03-19 18:36:04 INFO discord.gateway Shard ID None has connected to Gateway (Session ID: f983009c9f2881b87ee119278692efc9).
Eurobeat Radio is running!
2023-03-19 18:36:10 ERROR discord.ext.commands.bot Ignoring exception in command play
Traceback (most recent call last):
 File "/home/container/.local/lib/python3.10/site-packages/discord/ext/commands/core.py", line 229, in wrapped
 ret = await coro(*args, **kwargs)
 File "/home/container/radio.py", line 44, in play
 player.play(FFmpegPCMAudio('http://stream.eurobeat.xyz'))
NameError: name 'player' is not defined
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
 File "/home/container/.local/lib/python3.10/site-packages/discord/ext/commands/bot.py", line 1350, in invoke
 await ctx.command.invoke(ctx)
 File "/home/container/.local/lib/python3.10/site-packages/discord/ext/commands/core.py", line 1023, in invoke
 await injected(*ctx.args, **ctx.kwargs) # type: ignore
 File "/home/container/.local/lib/python3.10/site-packages/discord/ext/commands/core.py", line 238, in wrapped
 raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: NameError: name 'player' is not defined



I tried running it on my pc and that was without error, but once it was on the hosting it ran in to the error up the page.


Here is the code :


import discord
import urllib.request, json 
from discord import FFmpegPCMAudio
from discord.ext import commands
from discord.ext import tasks
client= commands.Bot(command_prefix="er!", intents=discord.Intents.all(), help_command=None)

@tasks.loop(seconds=10.0)
async def my_background_task():
 """Will loop every 60 seconds and change the bots presence"""
 with urllib.request.urlopen('https://api.laut.fm/station/eurobeat/current_song') as url:
 data = json.load(url)
 global namestatus
 global artiststatus
 namestatus = data['title']
 artiststatus = data['artist']['name']
 await client.change_presence(activity=discord.Activity(type=discord.ActivityType.listening, name="Eurobeat FM"))
 await client.change_presence(activity=discord.Game(name="Para para dancing ~"))
 await client.change_presence(activity=discord.Activity(type=discord.ActivityType.listening, name=f"{namestatus} by {artiststatus}"))


@client.event
async def on_ready():
 print('Eurobeat Radio is running!')
 await client.wait_until_ready()
 my_background_task.start()


@client.event
async def on_voice_state_update(member, prev, cur):
 if client.user in prev.channel.members and len([m for m in prev.channel.members if not m.bot]) == 0:
 channel = discord.utils.get(client.voice_clients, channel=prev.channel)
 await channel.disconnect()

@client.command(aliases=['p', 'pla', 'join', 'j'])
async def play(ctx, url: str = 'http://stream.eurobeat.xyz'): 
 channel = ctx.message.author.voice.channel
 global player
 try:
 player = await channel.connect()
 except:
 pass
 player.play(FFmpegPCMAudio('http://stream.eurobeat.xyz'))
 embedVar = discord.Embed(title="Started Playing!", color=discord.Color.random())
 await ctx.send(embed=embedVar)



Would be very grateful for your help !