CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Probleme bot discord

naelll_
naelll_
Niveau 1
26 février 2023 à 16:21:06

Bonjour j'ai codé un bot discord voila le code :
import discord
from discord import Intents
import requests
from bs4 import BeautifulSoup
import time

TOKEN = 'MTA3NjYxMDMxNzkzODg1NTk0Ng.G274_J.pHx52fIL4gIpo3i31kKkdWN_Yp0Xgb3-GqbE5o'
CHANNEL_ID = 'https://discord.com/channels/1076616314862456953/1079388821667446864'
VINTED_URL = 'https://www.vinted.fr/vetements?search_text=&brand_id[]=53&brand_id[]=5977&brand_id[]=2703&brand_id[]=283953&brand_id[]=370427&brand_id[]=14491&brand_id[]=5774166&brand_id[]=687713&brand_id[]=5750136&size_id[]=207&size_id[]=208&size_id[]=209&status_ids[]=6&status_ids[]=1&status_ids[]=2&status_ids[]=3&catalog[]=79&catalog[]=1206&catalog[]=76&currency=EUR&search_id=8292877209&order=newest_first'

intents = discord.Intents.default()
intents.members = True
client = discord.Client(intents=intents)

@client.event
async def on_ready():
print('Logged in as {0.user}'.format(client))

async def check_vinted():
response = requests.get(VINTED_URL)
soup = BeautifulSoup(response.text, 'html.parser')
items = soup.select('.c-box')
if items:
for item in items:
title = item.select_one('.c-box__title').text.strip()
price = item.select_one('.c-box__price').text.strip()
image = item.select_one('.c-box__image img')['src']
link = 'https://www.vinted.fr' + item.select_one('.c-box__overlay')['href']
message = f'Nouvelle annonce Vinted : {title} - {price}\n{link}'
embed = discord.Embed(title=title, url=link, description=price)
embed.set_image(url=image)
channel = client.get_channel(CHANNEL_ID)
await channel.send(message, embed=embed)

@client.event
async def on_message(message):
if message.content.startswith('!start'):
last_announcements = set()
while True:
response = requests.get(VINTED_URL)
soup = BeautifulSoup(response.text, 'html.parser')
items = soup.select('.c-box')
if items:
new_announcements = set()
for item in items:
link = 'https://www.vinted.fr' + item.select_one('.c-box__overlay')['href']
new_announcements.add(link)
diff_announcements = new_announcements - last_announcements
for link in diff_announcements:
title = soup.select_one(f"a[href='{link}']").text.strip()
price = soup.select_one(f"a[href='{link}'] + .c-box__details .c-box__price").text.strip()
image = soup.select_one(f"a[href='{link}'] + .c-box__image img")['src']
message = f'Nouvelle annonce Vinted : {title} - {price}\n{link}'
embed = discord.Embed(title=title, url=link, description=price)
embed.set_image(url=image)
channel = client.get_channel(CHANNEL_ID)
await channel.send(message, embed=embed)
last_announcements = new_announcements
time.sleep(5) # Attendre 5 secondes avant de vérifier à nouveau

client.run(TOKEN)
Mais après bien vérifier qu'il soit en ligne et lui avoir mis les permissions administrateur ainsi qu'avoir dit !start dans le bon canal rien ne se passe le bot ne dit rien comment je peux faire ?

Azerban
Azerban
Niveau 16
26 février 2023 à 18:58:12

Trop de choses qui ne vont pas dans ton programme. Déjà tu ne peux pas juste te pointer et faire une requête sur le site sans lui passer au minimum des headers légitimes sinon le site te bloque et tu n'as aucun résultat.

Ensuite vinted est ce qu'on appelle une SPA, le backend est codé en Ruby on rails et le frontend en React. Le frontend communique avec le backend via une API Rest donc deux solutions dans ton cas:
- soit tu scrapes directement l'API Rest de vinted
- soit tu interroges le frontend pour voir si certaines données ne sont pas déjà présentes dans le html de la réponse au moment du chargement du DOM.

Pour la deuxième solution, c'est le cas, les données sont en JSON dans la dernière balise script application/json de la page.

Comme toi tu veux uniquement les articles les plus récents pour les republier sur un discord, prendre une commission et devenir riche (ce qui ne sera jamais le vas Valentin), tu peux passer par la deuxième solution pour avoir les articles les plus récents.

Voici comment faire en Python :

from __future__ import annotations

import json
from pprint import pprint
from typing import Any
from typing import Iterator

import requests
from bs4 import BeautifulSoup


HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
    'Pragma': 'no-cache',
    'Sec-Fetch-Dest': 'document',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-Site': 'none',
    'Sec-Fetch-User': '?1',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/110.0',
}


def get_items(url: str) -> Iterator[dict[str, Any]]:
    response = requests.get(url, headers=HEADERS)
    soup = BeautifulSoup(response.text, 'html.parser')
    script = soup.select('script[type="application/json"]')[-1]
    json_payload = json.loads(script.text)
    items = json_payload['items']['catalogItems']['byId']

    scraped_item = {}
    for _, item in items.items():
        scraped_item['id'] = item['id']
        scraped_item['title'] = item['title']
        scraped_item['price'] = float(item['price'])
        scraped_item['total_price'] = float(item['total_item_price'])
        scraped_item['brand'] = item['brand_title']
        scraped_item['url'] = item['url']
        scraped_item['size'] = item['size_title']
        scraped_item['image'] = item['photo']['url']
        
        yield scraped_item


def main() -> int:
    url = 'https://www.vinted.fr/vetements?search_text=&brand_id[]=53&brand_id[]=5977&brand_id[]=2703&brand_id[]=283953&brand_id[]=370427&brand_id[]=14491&brand_id[]=5774166&brand_id[]=687713&brand_id[]=5750136&size_id[]=207&size_id[]=208&size_id[]=209&status_ids[]=6&status_ids[]=1&status_ids[]=2&status_ids[]=3&catalog[]=79&catalog[]=1206&catalog[]=76&currency=EUR&search_id=8292877209&order=newest_first''
    for item in get_items(url):
        pprint(item)
    return 0
    

if __name__ == "__main__":
    raise SystemExit(main())
naelll_
naelll_
Niveau 1
26 février 2023 à 22:16:47

Le 26 février 2023 à 18:58:12 :
Trop de choses qui ne vont pas dans ton programme. Déjà tu ne peux pas juste te pointer et faire une requête sur le site sans lui passer au minimum des headers légitimes sinon le site te bloque et tu n'as aucun résultat.

Ensuite vinted est ce qu'on appelle une SPA, le backend est codé en Ruby on rails et le frontend en React. Le frontend communique avec le backend via une API Rest donc deux solutions dans ton cas:
- soit tu scrapes directement l'API Rest de vinted
- soit tu interroges le frontend pour voir si certaines données ne sont pas déjà présentes dans le html de la réponse au moment du chargement du DOM.

Pour la deuxième solution, c'est le cas, les données sont en JSON dans la dernière balise script application/json de la page.

Comme toi tu veux uniquement les articles les plus récents pour les republier sur un discord, prendre une commission et devenir riche (ce qui ne sera jamais le vas Valentin), tu peux passer par la deuxième solution pour avoir les articles les plus récents.

Voici comment faire en Python :

from __future__ import annotations

import json
from pprint import pprint
from typing import Any
from typing import Iterator

import requests
from bs4 import BeautifulSoup


HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
    'Pragma': 'no-cache',
    'Sec-Fetch-Dest': 'document',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-Site': 'none',
    'Sec-Fetch-User': '?1',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/110.0',
}


def get_items(url: str) -> Iterator[dict[str, Any]]:
    response = requests.get(url, headers=HEADERS)
    soup = BeautifulSoup(response.text, 'html.parser')
    script = soup.select('script[type="application/json"]')[-1]
    json_payload = json.loads(script.text)
    items = json_payload['items']['catalogItems']['byId']

    scraped_item = {}
    for _, item in items.items():
        scraped_item['id'] = item['id']
        scraped_item['title'] = item['title']
        scraped_item['price'] = float(item['price'])
        scraped_item['total_price'] = float(item['total_item_price'])
        scraped_item['brand'] = item['brand_title']
        scraped_item['url'] = item['url']
        scraped_item['size'] = item['size_title']
        scraped_item['image'] = item['photo']['url']
        
        yield scraped_item


def main() -> int:
    url = 'https://www.vinted.fr/vetements?search_text=&brand_id[]=53&brand_id[]=5977&brand_id[]=2703&brand_id[]=283953&brand_id[]=370427&brand_id[]=14491&brand_id[]=5774166&brand_id[]=687713&brand_id[]=5750136&size_id[]=207&size_id[]=208&size_id[]=209&status_ids[]=6&status_ids[]=1&status_ids[]=2&status_ids[]=3&catalog[]=79&catalog[]=1206&catalog[]=76&currency=EUR&search_id=8292877209&order=newest_first''
    for item in get_items(url):
        pprint(item)
    return 0
    

if __name__ == "__main__":
    raise SystemExit(main())

Bonsoir je veux juste crée un bot discord pour qu'il m'envoie les dernières annonces avec un filtre précis et comme je ne m'y connais absolument pas je suis passer par chat gpt.
Donc je n'ai pas trop compris ce que vous avez dit je dois remplacer tout le code que j'ai par le votre ?

Marav
Marav
Niveau 53
26 février 2023 à 23:31:47

Bonjour j'ai codé un bot discord voila le code :

Donc tu n'as pas codé un bot discord.
Ça serait interessant je pense de préciser si les questions viennent de Chat GPT, Azerban a pris de son temps pour répondre sur un code qu'il pensait que t'avais produit, c'est pas cool pour lui.

Cofi-Lake
Cofi-Lake
Niveau 43
27 février 2023 à 00:40:51

Si le bot ne fonctionne pas ce serait bien de préciser le message d'erreur également

godrik
godrik
Niveau 30
27 février 2023 à 03:27:41

chatPGT va vraiment etre la plaie des forums j'air l'impression.

"J''ai demande a chatGPT de resoudre mon probleme, mais ca marche pas. AIDEZ MOI!!"

Rattmann
Rattmann
Niveau 25
27 février 2023 à 09:06:48

j'ai codé un bot discord

comme je ne m'y connais absolument pas je suis passer par chat gpt.

euh... :(

Message édité le 27 février 2023 à 09:10:57 par Rattmann
Rattmann
Rattmann
Niveau 25
27 février 2023 à 09:14:15

Le 27 février 2023 à 03:27:41 :
chatPGT va vraiment etre la plaie des forums j'air l'impression.

"J''ai demande a chatGPT de resoudre mon probleme, mais ca marche pas. AIDEZ MOI!!"

c'est comme les "AI artists" :hap: remplir un prompt c'est pas faire de l'art :non:
demander à un bot de pisser du code c'est pas programmer :non:

Morios20
Morios20
Niveau 7
27 février 2023 à 13:26:21

Le 27 février 2023 à 03:27:41 :
chatPGT va vraiment etre la plaie des forums j'air l'impression.

"J''ai demande a chatGPT de resoudre mon probleme, mais ca marche pas. AIDEZ MOI!!"

non c'est la naissance d'un nouveau délire :

-j'ai un problème :-(

-demande a chat GPT https://image.noelshack.com/fichiers/2022/13/2/1648542973-doomerboy-5.png

bientôt des faux utilisateurs bots directement relié a chatGPT pour répondre automatiquement, même glander sur le forum ça sera remplacer par l'IA

naelll_
naelll_
Niveau 1
27 février 2023 à 22:23:52

Bon alors je m'en prend plein la tête du coup.
J'aurais pu préciser en effet que ce n'est donc pas moi qui ai codé le bot mais bien chatgpt.
Cependant j'aimerai bien de l'aide s'il vous plait pour le code.
Est-ce que je dois remplacer tout le code par celui de Azerban ?
Je ne m'y connais pas du tout donc désolé si j'ai du mal pour la compréhension.

naelll_
naelll_
Niveau 1
27 février 2023 à 22:29:39

Le 27 février 2023 à 00:40:51 :
Si le bot ne fonctionne pas ce serait bien de préciser le message d'erreur également

Il n'y a pas de message d'erreur tout semble fonctionner, le bot est bien connecté sur mon serveur discord et j'ai tout vérifier (comme chatgpt me l'a dit) mais lorsque j'écrit "!start" , ce qui devrait faire que le bot commence a envoyer des annonces de ce que j'ai compris, dans le bon channel le bot ne répond absolument rien et il n'y a pas de message d'erreur.

Rattmann
Rattmann
Niveau 25
28 février 2023 à 09:05:20

Azerban as pris le temps de te construire une réponse détaillée, tu peux faire l'éffort de chercher par toi même pour comprendre.

naelll_
naelll_
Niveau 1
28 février 2023 à 23:49:20

Bon eh bien tant pis si vous ne voulez pas me donner plus d'indication. Mais merci Azerban d'avoir donner de ton temps pour le code malheureusement je ne sais pas quoi faire avec...

LGV
LGV
Niveau 28
01 mars 2023 à 00:21:54

En fait le probleme vient du fait qu'il est impossible de t'aider : n'importe quel element de reponse pour te debloquer sera necessairement incomplet, puisque tu dis toi-meme ne rien y connaitre, et ne saura donc pas quoi en faire pour avancer.

Á partir de lá, la seule facon d'avancer serait soit de tout t'expliquer en detail pour que tu deviennes autonome, soit de tout faire á ta place pour te fournir une solution clef-en-main prete á l'emploi ; deux options bcp trop consommatrice en temps et qui relevent bcp plus du service pour lequel on paye un professionel.

L'entraide marche á partir du moment oú les intervenants savent au moins un peu ce qu'ils font et peuvent progresser avec des pistes ou des elements partiels.

Message édité le 01 mars 2023 à 00:22:55 par LGV
godrik
godrik
Niveau 30
01 mars 2023 à 04:08:49

J'ai essaye chatGPT recement pour voir comment il fait un tas de probleme. Et en vrai chatGPT est super fort a pondre un code qui a l'air raisonnable mais qui ne marche pas.
Donc j'imagine que dans les mois a venir on va voir plein de "j'ai ecrit ca avec chat GPT mais ca marche pas, aidez moi"
C'est un peu comme si c'est IA n'aidait pas vraiment les gens...

Cofi-Lake
Cofi-Lake
Niveau 43
01 mars 2023 à 09:30:54

Le 01 mars 2023 à 04:08:49 :
J'ai essaye chatGPT recement pour voir comment il fait un tas de probleme. Et en vrai chatGPT est super fort a pondre un code qui a l'air raisonnable mais qui ne marche pas.
Donc j'imagine que dans les mois a venir on va voir plein de "j'ai ecrit ca avec chat GPT mais ca marche pas, aidez moi"
C'est un peu comme si c'est IA n'aidait pas vraiment les gens...

"L'IA va remplacer les devs", qu'ils disaient :rire:

Message édité le 01 mars 2023 à 09:31:06 par Cofi-Lake
Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment