Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2023-07-29T08:42:49+02:00Les derniers messages parus sur le forum de Zeste de Savoir.Bot discord, message #2515312023-07-29T08:42:49+02:00Ge0/@Ge0https://zestedesavoir.com/forums/sujet/17068/bot-discord/?page=1#p251531<p>Je ne connaissais pas replit mais le seul moyen de savoir c’est d’essayer.</p>
<p>Personnellement je suis encore abonné à heroku qui ne m’a pas déçu jusque-là.</p>Bot discord, message #2515212023-07-28T16:06:19+02:00flopy78/@flopy78https://zestedesavoir.com/forums/sujet/17068/bot-discord/?page=1#p251521<p>Bonjour,</p>
<p>Merci beaucoup !</p>
<p>Est-ce que vous pensez que faire tourner le bot sur replit.com pourrait marcher ?</p>
<p>Bonne journée,</p>
<p><a href="/@flopy78" rel="nofollow" class="ping ping-link">@<span class="ping-username">flopy78</span></a></p>Bot discord, message #2515032023-07-27T11:08:19+02:00Aabu/@Aabuhttps://zestedesavoir.com/forums/sujet/17068/bot-discord/?page=1#p251503<p>Pour faire tourner le bot en permanence, il n’y a pas vraiment d’autre solution que… d’avoir le programme allumé en permanence.</p>
<p>Le plus simple pour toi est probablement de le faire tourner sur ton propre ordinateur, que tu laisserais allumé, ou un petit serveur chez toi, genre Raspberry Pi.</p>
<p>La solution habituelle sinon pour ce genre de choses, c’est d’utiliser un serveur hébergé ailleurs. Ça peut être un peu de boulot à mettre en place, surtout si tu n’y connais rien. Il y a peut être des solutions clés-en-main pour des bots Discord, mais je ne connais pas. </p>Bot discord, message #2515022023-07-27T09:57:54+02:00flopy78/@flopy78https://zestedesavoir.com/forums/sujet/17068/bot-discord/?page=1#p251502<p>Bonjour,</p>
<p>J’ai finalement réussi à faire passer les bons droits ! </p>
<p>J’ai mis du temps à trouver où les droits devaient être accordés…</p>
<p>Par contre, la question du 24h/24 reste encore d’actualité…</p>
<p>Merci à tous,</p>
<p>Bonne journée,</p>
<p><a href="/@flopy78" rel="nofollow" class="ping ping-link">@<span class="ping-username">flopy78</span></a></p>Bot discord, message #2515012023-07-27T09:05:23+02:00PetitAgrume/@PetitAgrumehttps://zestedesavoir.com/forums/sujet/17068/bot-discord/?page=1#p251501<p>Salut, as tu essayer avec <code>Tntents.all</code> ?</p>
<p>Ou de mettre un print dans <code>on_message</code> pour voir si le problème vient de discord.py ou de la fonction elle même ?</p>Bot discord, message #2514952023-07-26T19:19:18+02:00flopy78/@flopy78https://zestedesavoir.com/forums/sujet/17068/bot-discord/?page=1#p251495<p>Bonjour,</p>
<p>J’ai élaboré mon bot, et j’ai un petit problème : la méthode "on_message" ne fonctionne pas !</p>
<p>Voici le code de mon bot (l’objectif est de réprimander les membres grossiers) :</p>
<div class="hljs-code-div hljs-code-py"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span><span data-count="11"></span><span data-count="12"></span><span data-count="13"></span><span data-count="14"></span><span data-count="15"></span><span data-count="16"></span><span data-count="17"></span><span data-count="18"></span><span data-count="19"></span></div><pre><code class="hljs language-py"><span class="hljs-keyword">import</span> discord
insultes = [<span class="hljs-string">"merde"</span>,<span class="hljs-string">"putain"</span>,<span class="hljs-string">"chier"</span>,<span class="hljs-string">"geule"</span>,<span class="hljs-string">"race"</span>,<span class="hljs-string">"nické"</span>,<span class="hljs-string">"nicker"</span>,<span class="hljs-string">"nicke"</span>,<span class="hljs-string">"con"</span>,<span class="hljs-string">"connard"</span>,<span class="hljs-string">"salope"</span>,<span class="hljs-string">"pute"</span>,<span class="hljs-string">"salaud"</span>]
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PyBot</span>(<span class="hljs-params">discord.Client</span>):</span>
<span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">on_ready</span>(<span class="hljs-params">self</span>):</span>
<span class="hljs-built_in">print</span>(<span class="hljs-string">"go !"</span>)
<span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">on_message</span>(<span class="hljs-params">self, message</span>):</span>
<span class="hljs-keyword">if</span> message.author == self.user:
<span class="hljs-keyword">return</span>
text = message.content.lower()
<span class="hljs-built_in">print</span>(text)
nb_insultes = <span class="hljs-number">0</span>
<span class="hljs-keyword">for</span> insulte <span class="hljs-keyword">in</span> insultes:
<span class="hljs-keyword">if</span> insulte <span class="hljs-keyword">in</span> text:
nb_insultes += <span class="hljs-number">1</span>
<span class="hljs-keyword">if</span> nb_insultes > <span class="hljs-number">0</span>:
<span class="hljs-built_in">print</span>(<span class="hljs-string">"insultes détectées"</span>)
<span class="hljs-keyword">await</span> message.channel.send(<span class="hljs-string">"{message.author}, surveille ton langage ! Il y avait {nb_insultes} grossièretées sur ton langage..."</span>)
</code></pre></div>
<p>Et le code de mise en route :</p>
<div class="hljs-code-div hljs-code-py"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span><span data-count="11"></span></div><pre><code class="hljs language-py"><span class="hljs-keyword">import</span> discord
<span class="hljs-keyword">from</span> bot <span class="hljs-keyword">import</span> PyBot
intents = discord.Intents.default()
client = PyBot(intents = intents)
token = <span class="hljs-string">"MY_TOKEN"</span>
client.run(token)
</code></pre></div>
<p>J’ai l’impression que mon bot n’a pas les droits nécessaires, mais je ne sais pas comment m’y prendre… Pourriez-vous m’aider ?</p>
<p>Bonne journée,</p>
<p><a href="/@flopy78" rel="nofollow" class="ping ping-link">@<span class="ping-username">flopy78</span></a></p>Bot discord, message #2514942023-07-26T18:50:58+02:00flopy78/@flopy78https://zestedesavoir.com/forums/sujet/17068/bot-discord/?page=1#p251494<p>Salut,</p>
<p>Merci beaucoup ! (c’est l’exécution du fichier ".command" qui a marché).
Le bot fonctionne, mais j’ai encore quelques petites questions : </p>
<ul>
<li>Comment est-ce que je peux vérifier les droits de mon bot ?</li>
<li>Dès que je coupe le programme Python, le bot est hors-ligne sur le serveur… Comment faire pour qu’il tourne 24h/24 7j/7 ?</li>
</ul>
<p>Merci encore,</p>
<p>Bonne journée,</p>
<p><a href="/@flopy78" rel="nofollow" class="ping ping-link">@<span class="ping-username">flopy78</span></a></p>Bot discord, message #2514932023-07-26T14:35:26+02:00Ge0/@Ge0https://zestedesavoir.com/forums/sujet/17068/bot-discord/?page=1#p251493<p>Salut,</p>
<p>Ça n’a pas l’air d’être lié à ton code en lui-même. Lorsqu’on recherche plus d’informations sur ton erreur, on tombe sur des cas similaires qui expliquent que les certificats ne sont pas correctement installés sur des systèmes type Mac OS.</p>
<p>As-tu essayé de suivre cette démarche ? <a href="https://support.chainstack.com/hc/en-us/articles/9117198436249-Common-SSL-Issues-on-Python-and-How-to-Fix-it">https://support.chainstack.com/hc/en-us/articles/9117198436249-Common-SSL-Issues-on-Python-and-How-to-Fix-it</a></p>Bot discord, message #2514922023-07-26T12:23:32+02:00flopy78/@flopy78https://zestedesavoir.com/forums/sujet/17068/bot-discord/?page=1#p251492<p>Bonjour,</p>
<p>Merci d’avoir rectifié pour moi cette gaffe de ma part !</p>
<p>Bonne journée,</p>
<p><a href="/@flopy78" rel="nofollow" class="ping ping-link">@<span class="ping-username">flopy78</span></a></p>Bot discord, message #2514912023-07-26T11:56:39+02:00artragis/@artragishttps://zestedesavoir.com/forums/sujet/17068/bot-discord/?page=1#p251491<p>Bonjour,</p>
<p>J’ai modifié ton message pour retirer le token qui est une information privée.
Je te recommande d’en créer un nouveau au cas où des personnes mal intentionnée l’auraient trouvé.</p>Bot discord, message #2514902023-07-26T11:44:20+02:00flopy78/@flopy78https://zestedesavoir.com/forums/sujet/17068/bot-discord/?page=1#p251490<p>Bonjour,</p>
<p>Je suis entrain d’essayer de développer un bot discord avec python… Sauf que je n’arrive pas à le connecter.</p>
<p>Pour l’instant, j’ai fait un petit bot tout simple qui ne fait rien : </p>
<div class="hljs-code-div hljs-code-py"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span><span data-count="11"></span></div><pre><code class="hljs language-py"><span class="hljs-keyword">import</span> discord
intents = discord.Intents.default()
intents.message_content = <span class="hljs-literal">True</span>
intents.members = <span class="hljs-literal">True</span>
client = discord.Client(intents = intents)
token = <span class="hljs-string">"REMOVED"</span>
client.run(token)
</code></pre></div>
<p>Et je reçois l’erreur suivante :</p>
<p>aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host discord.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)’)]</p>
<p>De ce que j’en comprends, j’ai un problème avec la vérification SSL lors de la connexion, mais ne sais pas du tout comment m’y prendre pour résoudre ça …</p>
<p>Merci d’avance,</p>
<p><a href="/@flopy78" rel="nofollow" class="ping ping-link">@<span class="ping-username">flopy78</span></a></p>Le serveur Discord de ZdS est officiel, message #2512942023-07-09T10:50:51+02:00sgble/@sgblehttps://zestedesavoir.com/forums/sujet/17044/le-serveur-discord-de-zds-est-officiel/?page=1#p251294<p>Bonjour,</p>
<p>Le 24 juin se tenait l’AGO 2023 de l’association Zeste de Savoir. Beaucoup de sujets ont été mis à l’ordre du jour et vous pourrez retrouver une pré-version du PV à cette adresse : <a href="https://github.com/zestedesavoir/documents-association/blob/7d8a60a50fbbc5007aaa70d8a3fcf3a2b6c30435/2023/2023-06-24_PV_AGO.md">https://github.com/zestedesavoir/documents-association/blob/7d8a60a50fbbc5007aaa70d8a3fcf3a2b6c30435/2023/2023–06–24_PV_AGO.md</a></p>
<p>La section 8 <em>Statut du serveur Discord non-officiel de Zeste de Savoir</em> est celle qui porte sur Discord et que j’ai proposée à l’ordre du jour.</p>
<p>Le serveur était jusque-là non officiel, mais <strong>il est désormais officiel</strong> d’après le vote qui a eu lieu (approuvé avec 12 pour, 1 contre et 4 blancs).</p>
<p>La section 8 du PV d’AG est assez courte et je vous invite à la lire si le pourquoi du comment vous intéresse, mais sinon voici l’essentiel :</p>
<ul>
<li>ça ne changera rien en pratique, l’officialisation peut être vue comme une simple étape juridique qui permet d’harmoniser l’application du règlement de ZdS à travers ses différents canaux, ainsi que de reconnaître un serveur qui pouvait déjà être perçu comme <em>de facto</em> officiel et qui pouvait déjà engager la responsabilité de l’association de toute façon ;</li>
<li>la question de s’en servir comme plateforme de choix sera discutée dans la futur, mais aucun consensus semble émerger pour aller dans ce sens, vous n’avez donc <em>pas</em> besoin d’être sur le serveur Discord pour bénéficier de l’expérience ZdS (pas plus que le besoin d’être sur le salon IRC) ;</li>
<li>il faut rester conscient du fait que l’entreprise derrière Discord fait des choix parfois douteux et imprévisibles dans l’éventualité où nous voudrions aller plus loin que la simple officialisation. </li>
</ul>
<p>Le lien du serveur se partageait de façon plutôt discrète jusque-là, mais je suppose qu’il pourra figurer sur le site à l’avenir. En attendant, voici le lien du serveur Discord pour les membres qui souhaitent le rejoindre : <a href="https://discord.gg/awEQsm6wYt">https://discord.gg/awEQsm6wYt</a></p>
<div class="custom-block custom-block-warning"><div class="custom-block-body"><p>Attention : il n’y a pas forcément de correspondance 1:1 entre le staff sur le site et le staff sur le serveur Discord.</p></div></div>
<p>Bon dimanche !</p>
<hr>
<p><em>Modification par <a href="/@Amaury" rel="nofollow" class="ping ping-link">@<span class="ping-username">Amaury</span></a> — Casquette.</em></p> Conversion d'un flux audio twilio mu-law 8Hz pour une lecture en temps réel avec Discord.js, message #2502652023-05-01T23:44:43+02:00axiocontactezmoi/@axiocontactezmoihttps://zestedesavoir.com/forums/sujet/16942/conversion-dun-flux-audio-twilio-mu-law-8hz-pour-une-lecture-en-temps-reel-avec-discordjs/?page=1#p250265<p>Merci de ta réponse,</p>
<p>Je comprends l’idée, mais je suis bien incapable de la mettre en oeuvre en code, je ne sais pas comment m’y prendre.</p> Conversion d'un flux audio twilio mu-law 8Hz pour une lecture en temps réel avec Discord.js, message #2502622023-05-01T22:31:16+02:00ache/@achehttps://zestedesavoir.com/forums/sujet/16942/conversion-dun-flux-audio-twilio-mu-law-8hz-pour-une-lecture-en-temps-reel-avec-discordjs/?page=1#p250262<p>Au sujet de l’erreur:
<code>Error: Cannot create a Buffer larger than 0x100000000 bytes</code></p>
<p>La réponse a été donnée.</p>
<blockquote>
<p>You need to make sure that the length of the argument to encoder.encode() is a multiple of 2.5ms.</p>
</blockquote>
<p>L’équation est mal passé au markdown mais <span class="math math-inline"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>16</mn><mo>∗</mo><mn>2</mn><mo>∗</mo><mn>2.5</mn><mo>=</mo><mn>80</mn></mrow><annotation encoding="application/x-tex">16*2*2.5 = 80</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mord">6</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">∗</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">∗</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">8</span><span class="mord">0</span></span></span></span></span>, je te laisse calculer avec ton cas.</p>
<p>Sinon, il n’est pas ce que tu souhaites faire. Tu parles d’encoder en PCM mais c’est déjà ce que te fourni Twilo (même si encodé par la loi µ).</p> Conversion d'un flux audio twilio mu-law 8Hz pour une lecture en temps réel avec Discord.js, message #2502522023-05-01T02:50:34+02:00axiocontactezmoi/@axiocontactezmoihttps://zestedesavoir.com/forums/sujet/16942/conversion-dun-flux-audio-twilio-mu-law-8hz-pour-une-lecture-en-temps-reel-avec-discordjs/?page=1#p250252<p>Pouvez-vous m’aider à convertir le format audio Twilio mu-law 8Hz en un format lisible en temps réel dans Discord.js? J’essaie de créer un bot Discord qui peut diffuser l’audio reçu d’un appel Twilio, mais j’ai des problèmes avec la conversion de format. Avez-vous des suggestions sur la façon dont je peux y parvenir?</p>
<p>Je sais qu’ici il y a des cracks.</p>
<p>Voilà ce que j’ai essayé. Je reçois un payload mulaw, 8khz, 1 canal encodé en base64, que je décode, puis tente de convertir en PCM pour qu’il soit lu par discord.js, mais ça ne marche pas. J’ai également essayé de le convertir en opus avec la librairie <a href="/@discord" rel="nofollow" class="ping ping-link">@<span class="ping-username">discord</span></a>.js/opus, mais la conversion de marche pas je tombe sur message d’erreur (Error: Cannot create a Buffer larger than 0x100000000 bytes, cf <a href="https://github.com/discordjs/opus/issues/51">https://github.com/discordjs/opus/issues/51</a>).</p>
<div class="hljs-code-div hljs-code-js"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span><span data-count="11"></span><span data-count="12"></span><span data-count="13"></span><span data-count="14"></span><span data-count="15"></span><span data-count="16"></span><span data-count="17"></span><span data-count="18"></span><span data-count="19"></span><span data-count="20"></span><span data-count="21"></span><span data-count="22"></span></div><pre><code class="hljs language-js"><span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Receiving audio..."</span>);
<span class="hljs-comment">// ici, je voudrais essayer de convertir le payload dans un format qui puisse être lu par discord.js</span>
<span class="hljs-comment">// J'essaye de le convertir en PCM, mais sans succès.</span>
<span class="hljs-keyword">const</span> payload = msg.media.payload;
<span class="hljs-keyword">const</span> wav = <span class="hljs-keyword">new</span> WaveFile();
wav.fromScratch(<span class="hljs-number">1</span>, <span class="hljs-number">8000</span>, <span class="hljs-string">"8m"</span>, Buffer.from(payload, <span class="hljs-string">"base64"</span>));
wav.fromMuLaw();
<span class="hljs-comment">// You can resample.</span>
wav.toSampleRate(<span class="hljs-number">16000</span>);
<span class="hljs-comment">// You can write this straight to a file (will have the headers)</span>
<span class="hljs-keyword">const</span> results = wav.toBuffer();
<span class="hljs-comment">// Or you can access the samples without the WAV header</span>
<span class="hljs-keyword">const</span> samples = wav.data.samples;
fs.writeFileSync(<span class="hljs-string">'./stream.wav'</span>, results);
<span class="hljs-keyword">try</span> {
<span class="hljs-keyword">const</span> resource = createAudioResource(<span class="hljs-string">'./stream.wav'</span>);
player.play(resource);
} <span class="hljs-keyword">catch</span> (ex) {
<span class="hljs-built_in">console</span>.log(ex);
}
</code></pre></div>
<p><strong>Code complet:</strong></p>
<details class="custom-block custom-block-spoiler"><div class="custom-block-body"><div class="hljs-code-div hljs-code-js"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span><span data-count="11"></span><span data-count="12"></span><span data-count="13"></span><span data-count="14"></span><span data-count="15"></span><span data-count="16"></span><span data-count="17"></span><span data-count="18"></span><span data-count="19"></span><span data-count="20"></span><span data-count="21"></span><span data-count="22"></span><span data-count="23"></span><span data-count="24"></span><span data-count="25"></span><span data-count="26"></span><span data-count="27"></span><span data-count="28"></span><span data-count="29"></span><span data-count="30"></span><span data-count="31"></span><span data-count="32"></span><span data-count="33"></span><span data-count="34"></span><span data-count="35"></span><span data-count="36"></span><span data-count="37"></span><span data-count="38"></span><span data-count="39"></span><span data-count="40"></span><span data-count="41"></span><span data-count="42"></span><span data-count="43"></span><span data-count="44"></span><span data-count="45"></span><span data-count="46"></span><span data-count="47"></span><span data-count="48"></span><span data-count="49"></span><span data-count="50"></span><span data-count="51"></span><span data-count="52"></span><span data-count="53"></span><span data-count="54"></span><span data-count="55"></span><span data-count="56"></span><span data-count="57"></span><span data-count="58"></span><span data-count="59"></span><span data-count="60"></span><span data-count="61"></span><span data-count="62"></span><span data-count="63"></span><span data-count="64"></span><span data-count="65"></span><span data-count="66"></span><span data-count="67"></span><span data-count="68"></span><span data-count="69"></span><span data-count="70"></span><span data-count="71"></span><span data-count="72"></span><span data-count="73"></span><span data-count="74"></span><span data-count="75"></span><span data-count="76"></span><span data-count="77"></span><span data-count="78"></span><span data-count="79"></span><span data-count="80"></span><span data-count="81"></span><span data-count="82"></span><span data-count="83"></span><span data-count="84"></span><span data-count="85"></span><span data-count="86"></span><span data-count="87"></span><span data-count="88"></span><span data-count="89"></span><span data-count="90"></span><span data-count="91"></span><span data-count="92"></span><span data-count="93"></span><span data-count="94"></span><span data-count="95"></span><span data-count="96"></span><span data-count="97"></span><span data-count="98"></span><span data-count="99"></span><span data-count="100"></span><span data-count="101"></span><span data-count="102"></span><span data-count="103"></span><span data-count="104"></span><span data-count="105"></span><span data-count="106"></span><span data-count="107"></span><span data-count="108"></span><span data-count="109"></span><span data-count="110"></span><span data-count="111"></span><span data-count="112"></span><span data-count="113"></span><span data-count="114"></span><span data-count="115"></span><span data-count="116"></span><span data-count="117"></span><span data-count="118"></span><span data-count="119"></span><span data-count="120"></span><span data-count="121"></span><span data-count="122"></span><span data-count="123"></span><span data-count="124"></span></div><pre><code class="hljs language-js"><span class="hljs-keyword">const</span> { WebSocketServer } = <span class="hljs-built_in">require</span>(<span class="hljs-string">"ws"</span>);
<span class="hljs-keyword">const</span> base64 = <span class="hljs-built_in">require</span>(<span class="hljs-string">"base64-js"</span>);
<span class="hljs-keyword">const</span> Discord = <span class="hljs-built_in">require</span>(<span class="hljs-string">"discord.js"</span>);
<span class="hljs-keyword">const</span> client = <span class="hljs-keyword">new</span> Discord.Client();
<span class="hljs-keyword">const</span> { VoiceConnectionStatus, Events } = <span class="hljs-built_in">require</span>(<span class="hljs-string">"@discordjs/voice"</span>);
<span class="hljs-keyword">const</span> {
getVoiceConnection,
createAudioResource,
createAudioPlayer,
NoSubscriberBehavior,
joinVoiceChannel,
StreamType,
createDefaultAudioReceiveStreamOptions,
} = <span class="hljs-built_in">require</span>(<span class="hljs-string">"@discordjs/voice"</span>);
<span class="hljs-keyword">const</span> RADIO_VOICE_CHANNEL = <span class="hljs-string">"1000397725231235205"</span>;
<span class="hljs-keyword">const</span> RADIO_TEXT_CHANNEL = <span class="hljs-string">"1000397055442817096"</span>;
<span class="hljs-keyword">const</span> { createReadStream } = <span class="hljs-built_in">require</span>(<span class="hljs-string">"node:fs"</span>);
<span class="hljs-keyword">const</span> { Readable } = <span class="hljs-built_in">require</span>(<span class="hljs-string">"stream"</span>);
<span class="hljs-keyword">const</span> WaveFile = <span class="hljs-built_in">require</span>(<span class="hljs-string">"wavefile"</span>).WaveFile;
<span class="hljs-keyword">const</span> fs = <span class="hljs-built_in">require</span>(<span class="hljs-string">"fs"</span>);
<span class="hljs-keyword">const</span> { OpusEncoder } = <span class="hljs-built_in">require</span>(<span class="hljs-string">"@discordjs/opus"</span>);
<span class="hljs-keyword">const</span> pcmUtil = <span class="hljs-built_in">require</span>(<span class="hljs-string">"pcm-util"</span>);
<span class="hljs-keyword">const</span> wav = <span class="hljs-built_in">require</span>(<span class="hljs-string">"wav"</span>);
<span class="hljs-keyword">const</span> convert = <span class="hljs-built_in">require</span>(<span class="hljs-string">"pcm-convert"</span>);
client.login(<span class="hljs-string">`TOKEN`</span>);
client.on(<span class="hljs-string">"ready"</span>, <span class="hljs-function">() =></span> {
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`Logged in as <span class="hljs-subst">${client.user.tag}</span>!`</span>);
<span class="hljs-keyword">const</span> channel = client.channels.cache.get(RADIO_VOICE_CHANNEL);
<span class="hljs-keyword">if</span> (!channel) {
<span class="hljs-keyword">return</span> <span class="hljs-built_in">console</span>.error(<span class="hljs-string">"The channel does not exist!"</span>);
}
connection = joinVoiceChannel({
<span class="hljs-attr">channelId</span>: channel.id,
<span class="hljs-attr">guildId</span>: channel.guild.id,
<span class="hljs-attr">adapterCreator</span>: channel.guild.voiceAdapterCreator,
<span class="hljs-attr">selfDeaf</span>: <span class="hljs-literal">false</span>,
<span class="hljs-attr">selfMute</span>: <span class="hljs-literal">false</span>,
});
connection.on(VoiceConnectionStatus.Ready, <span class="hljs-function">() =></span> {
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Connection ready"</span>);
});
});
<span class="hljs-keyword">let</span> resource = <span class="hljs-literal">null</span>;
<span class="hljs-keyword">let</span> player = createAudioPlayer({
<span class="hljs-attr">behaviors</span>: {
<span class="hljs-attr">noSubscriber</span>: NoSubscriberBehavior.Pause,
},
});
<span class="hljs-keyword">const</span> wss = <span class="hljs-keyword">new</span> WebSocketServer({ <span class="hljs-attr">port</span>: <span class="hljs-number">5000</span> });
wss.on(<span class="hljs-string">"connection"</span>, <span class="hljs-function">(<span class="hljs-params">ws</span>) =></span> {
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Connection accepted"</span>);
connection.subscribe(player);
ws.on(<span class="hljs-string">"message"</span>, <span class="hljs-keyword">async</span> (message) => {
<span class="hljs-keyword">const</span> msg = <span class="hljs-built_in">JSON</span>.parse(message);
<span class="hljs-keyword">switch</span> (msg.event) {
<span class="hljs-keyword">case</span> <span class="hljs-string">"connected"</span>:
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">"A new call has connected"</span>);
<span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">"start"</span>:
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`Starting media stream...`</span>, msg);
<span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">"media"</span>:
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Receiving audio..."</span>);
<span class="hljs-comment">// ici, je voudrais essayer de convertir le payload dans un format qui puisse être lu par discord.js</span>
<span class="hljs-comment">// J'essaye de le convertir en PCM, mais sans succès.</span>
<span class="hljs-keyword">const</span> payload = msg.media.payload;
<span class="hljs-keyword">const</span> wav = <span class="hljs-keyword">new</span> WaveFile();
wav.fromScratch(<span class="hljs-number">1</span>, <span class="hljs-number">8000</span>, <span class="hljs-string">"8m"</span>, Buffer.from(payload, <span class="hljs-string">"base64"</span>));
wav.fromMuLaw();
<span class="hljs-comment">// You can resample.</span>
wav.toSampleRate(<span class="hljs-number">16000</span>);
<span class="hljs-comment">// You can write this straight to a file (will have the headers)</span>
<span class="hljs-keyword">const</span> results = wav.toBuffer();
<span class="hljs-comment">// Or you can access the samples without the WAV header</span>
<span class="hljs-keyword">const</span> samples = wav.data.samples;
fs.writeFileSync(<span class="hljs-string">'./stream.wav'</span>, results);
<span class="hljs-keyword">try</span> {
<span class="hljs-keyword">const</span> resource = createAudioResource(<span class="hljs-string">'./stream.wav'</span>);
player.play(resource);
} <span class="hljs-keyword">catch</span> (ex) {
<span class="hljs-built_in">console</span>.log(ex);
}
<span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">"stop"</span>:
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Call has ended"</span>);
<span class="hljs-keyword">break</span>;
<span class="hljs-keyword">default</span>:
<span class="hljs-keyword">break</span>;
}
});
ws.on(<span class="hljs-string">"close"</span>, <span class="hljs-function">() =></span> {
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`Connection closed.`</span>);
});
});
</code></pre></div></div></details>Serveur Discord, message #2498242023-04-04T04:04:41+02:00helendam.gm/@helendam.gmhttps://zestedesavoir.com/forums/sujet/15909/serveur-discord/?page=1#p249824<p>Bonjour !
Il est tout à fait possible de créer un <a href="https://backroomsgame.co">backrooms game</a> serveur Discord sur les sciences, en particulier sur l’informatique, l’électronique et la cybersécurité. Il existe déjà de nombreux serveurs Discord sur ces sujets, mais il est toujours possible d’en créer un nouveau si vous pensez pouvoir apporter quelque chose de différent.
Cependant, pour réussir à créer un tel serveur et le faire fonctionner efficacement, il faut beaucoup de travail et d’engagement. Il est important d’avoir une vision claire de ce que vous voulez accomplir avec ce serveur et de trouver des personnes motivées pour <a href="https://backroomsgame.co">backrooms</a> vous aider à le gérer. Il est également important de mettre en place des règles claires pour assurer la sécurité et le respect de tous les membres.
Si vous recherchez des développeurs de bots Discord, vous pouvez chercher sur des sites tels que GitHub ou Reddit pour trouver des personnes intéressées par votre projet.
Dans tous les cas, il est important d’être prêt à investir du temps et des efforts pour faire de votre serveur Discord un lieu d’apprentissage et d’échange fructueux. Bonne chance !</p>ReVIE – Regardons une vidéo intéressante ensemble, message #2472372022-11-30T20:24:18+01:00Melcore/@Melcorehttps://zestedesavoir.com/forums/sujet/16642/revie-regardons-une-video-interessante-ensemble/?page=1#p247237<p>Les votes sont clos.</p>
<details class="custom-block custom-block-spoiler"><div class="custom-block-body"><p><img src="/media/galleries/5693/2e9b8e58-adde-4a6f-b049-5151d2fb8b58.png"></p></div></details>
<p>La première session de ReVIE aura lieu le vendredi 2 décembre à 20h30 sur le discord NO.</p>ReVIE – Regardons une vidéo intéressante ensemble, message #2471932022-11-28T20:21:23+01:00Stiv67/@Stiv67https://zestedesavoir.com/forums/sujet/16642/revie-regardons-une-video-interessante-ensemble/?page=1#p247193<p>Merci pour l’information</p>ReVIE – Regardons une vidéo intéressante ensemble, message #2471702022-11-28T12:04:38+01:00Melcore/@Melcorehttps://zestedesavoir.com/forums/sujet/16642/revie-regardons-une-video-interessante-ensemble/?page=1#p247170<p><a href="/@Rockaround" rel="nofollow" class="ping ping-link">@<span class="ping-username">Rockaround</span></a> Pour la régularité, c’est ce qu’on pense faire en amenant les "Regardons des conférences ensembles" sur Twitch. Mais je pense que pour faire débuter un nouveau projet, il vaut mieux commencer par vote de disponibilité pour avoir le plus de monde. Je pense que de toute façon, ça se stabilisera sur un jour (c’est ce qu’il passe par exemple avec les soirées communautaires jeu vidéo, auxquelles on est obligé de manigancer pour pas que ça soit toujours un dimanche)</p>ReVIE – Regardons une vidéo intéressante ensemble, message #2471692022-11-28T11:58:38+01:00Rockaround/@Rockaroundhttps://zestedesavoir.com/forums/sujet/16642/revie-regardons-une-video-interessante-ensemble/?page=1#p247169<p>C’est une bonne idée, et l’acronyme est sympa.</p>
<p>Si tu comptes en faire quelque chose de régulier, je pense que fixer une date ("tous les samedis", "premier lundi du mois", peu importe) permet de se défaire des sondages et de l’imprévisibilité. Après, pas sûr que la communauté soit assez importante pouravoir des intéressés à chaque fois en faisant comme ça.</p>ReVIE – Regardons une vidéo intéressante ensemble, message #2471682022-11-28T11:56:02+01:00Amaury/@Amauryhttps://zestedesavoir.com/forums/sujet/16642/revie-regardons-une-video-interessante-ensemble/?page=1#p247168<p>Cette idée me fait revivre !</p>