Robot Telegram qui vous aide à vérifier votre livraison express et suit automatiquement le dernier statut de votre livraison express ! Le produit fini peut être estampillé :
@bennyblog_bot( Ce robot est entretenu par moi depuis longtemps )
Ce robot ne peut pas seulement discuter et vérifier la livraison express ! Croyez-le ou non, vous pouvez également lui envoyer un message vocal ! Vous pouvez également rechercher des drames américains et japonais ! Pour des informations détaillées, veuillez consulter Fonctions et TODO
En raison de l'augmentation soudaine de l'utilisation des robots récemment, l'utilisation du mode d'interrogation peut facilement conduire à l'utilisation de l'API gratuite d'Express 100 dépassant 2 000 fois par jour, entraînant le blocage de l'adresse IP. Nous prévoyons donc actuellement de modifier l'API. Pour le moment, je n'ai trouvé que cette meilleure option :
Toute personne capable est invitée à soumettre des relations publiques ou d'autres suggestions expresses d'API ! Merci beaucoup. Il y a toujours un problème avec la requête de SF Express, je ne sais pas quelle API peut être utilisée.
démarrer - entrez le numéro de courrier à interroger
aide - aide
list - Afficher l'historique de mes requêtes
delete - Supprimer un certain enregistrement de requête de numéro
quickdel - Répondez à un message de requête pour supprimer rapidement l'enregistrement de requête de numéro de suivi
query - Interroger des séries télévisées et des films américains
yyets - Lien de téléchargement de requête
météo - Recherchez les prévisions météorologiques récentes pour une ville spécifiée
Ajoutez un robot et envoyez directement le numéro de lettre de transport à interroger (et ajoutez-le au suivi) ; Si votre numéro de commande contient des lettres, veuillez utiliser /start danhao123
; Si vous devez suivre plusieurs numéros de commande à la fois, veuillez utiliser /start 123,123
Anglais demi-largeur séparé par des virgules (bien sûr, ce sera misérable s'il est mis à jour)
Envoyez simplement un message directement ou envoyez une voix (chinois mandarin)
/query 蝙蝠侠
/yyets 神盾局
, puis cliquez sur le bouton pour opérer.Il doit être déployé sur un serveur pouvant accéder à l'API Telegram (ou configurer un proxy). Il prend en charge à la fois Python 2 et Python 3. Python 3 est recommandé et a été testé sur les plateformes suivantes :
Windows 10 : Python 2.7.13 32 bits Python 3.6.3 32 bits
Ubuntu 16.04/14.04, CentOS 7, Debian 9 : Python 2.7
Le script en un clic fonctionnera mieux sous systemd Le script en un clic n'est testé que sur Ubuntu 16.04 : Basculez d'abord vers l'utilisateur root :
wget -N --no-check-certificate https://raw.githubusercontent.com/BennyThink/ExpressBot/master/install.sh && bash install.sh
Suivez ensuite les instructions. Les systèmes qui prennent en charge systemd seront installés en tant que services systemd en même temps. D'autres systèmes peuvent utiliser l'initialisation correspondante pour configurer manuellement ou utiliser supervisor
.
# 启动服务
bash install.sh start
# 停止服务
bash install.sh stop
Remarque : Si vous êtes invité wget: command not found
sous CentOS, veuillez yum install wget
Si le script en un clic échoue, vous pouvez essayer la configuration manuelle
git clone https://github.com/BennyThink/ExpressBot
cd ExpressBot
pacman -S python python-pip python-certifi python-chardet python-future python-idna python-requests python-six python-urllib3
然后从 AUR 安装 python-pytelegrambotapi .
sudo apt install python3 python3-pip git
sudo pip3 install -r requirements.txt
Python3 veuillez utiliser pip3
au lieu de pip
pip install setuptools
pip install -r requirements.txt
Téléchargez et installez Python depuis le site officiel de Python, basculez vers le répertoire du projet, s'il s'agit de Python 2 :
pip install -r requirements.txt
S'il s'agit de Python 3, exécutez la commande suivante :
pip3 install -r requirements.txt
ffmpeg doit prendre en charge la reconnaissance audio (en utilisant ffmpe pour le transcodage des fichiers audio).
Si vous êtes sous Windows, téléchargez le fichier exe binaire de ffmpeg à partir d'ici (les trois sont requis) et placez-le dans PATH ; si vous êtes sous distribution Linux, vous pouvez l'installer directement avec le gestionnaire de paquets (vous pouvez également compiler ou télécharger le binaire). Le système Debian peut utiliser sudo apt install ffmpeg
, RHEL peut utiliser yum install ffmpeg
Modifiez config.py
pour la configuration. TOKEN est l'API du Bot Si TURING_KEY n'est pas configuré, la fonction robot ne sera pas activée.
TOKEN = 'Your TOKEN'
TURING_KEY = 'Your Key'
Créez le fichier d'unité : vim /lib/systemd/system/expressbot.service
Remplacez-vous et entrez les informations suivantes
[Unit]
Description=A Telegram Bot for querying expresses
After=network.target network-online.target nss-lookup.target
[Service]
Restart=on-failure
Type=simple
ExecStart=/usr/bin/python /home/ExpressBot/expressbot/main.py
[Install]
WantedBy=multi-user.target
Recharger le démon, démarrer automatiquement, démarrer
systemctl daemon-reload
systemctl enable expressbot.service
systemctl start expressbot.service
J'ai utilisé restart=on-failure
, et il redémarrera après avoir quitté en cas d'échec. S'il est défini sur always
, cela signifie que quelle qu'en soit la raison, tant que le processus est terminé, systemd nous aidera à le redémarrer immédiatement. Consultez le manuel systemd.service
pour plus de détails.
À des fins de test, exécutez main.py
avec nohub ou screen. Pour Python 3, veuillez remplacer python3
par python
cd /home/ExpressBot/expressbot
nohup python main.py
# 或者
cd /ExpressBot/expressbot
screen -S tgbot
python main.py
Si vous avez besoin de suivre les mises à jour et de les diffuser, nous devons alors effectuer des sondages régulièrement.
La minuterie actuellement utilisée est apscheduler, et INTERVAL
dans config.py
peut être utilisé pour définir l'intervalle.
# 查看运行状态
sudo systemctl status expressbot.service
# 启动
sudo systemctl start expressbot.service
# 停止
sudo systemctl stop expressbot.service
# 重启
sudo systemctl restart expressbot.service
supervisor
Docker est actuellement pris en charge, mais n'a pas été testé en détail.
docker pull bennythink/expressbot:latest
docker run -d --restart=always -e TOKEN= " TOKEN " -e TURING= " KEY " expressbot:v1
Si vous souhaitez le créer vous-même, téléchargez à nouveau le Dockerfile, puis
docker build -t expressbot:v1 .
Tout d’abord, permettez-moi de vous avertir fortement que tous les messages envoyés à ce bot peuvent être enregistrés. Mais en fait, ce robot est assez consciencieux. Par défaut, il n'enregistrera les informations suivantes dans la base de données qu'une fois la requête réussie. Vous pouvez les voir en utilisant la commande /list
:
Si vous envoyez une voix, le fichier vocal sera placé dans le répertoire /tmp
Je ne garantis pas que j'aurai l'intégrité morale de ne pas vérifier la base de données, mais je garantis que je protégerai correctement la base de données et empêcherai toute fuite.
Donc, si vous ne souhaitez pas l’utiliser, ne l’utilisez pas ou vous pouvez le supprimer après l’avoir vérifié.
Il existe un fichier appelé msg.py
Pour le débogage et d'autres besoins, vous pouvez définir LOGGER
sur True dans config.py
Bien sûr, vous ne pouvez pas définir l'API Turing dans le groupe (même la fonction d'interrogation de livraison express doit être supprimée). empêcher le robot de dire des bêtises). De plus, le mode confidentialité du robot doit être activé dans le groupe.
Hmm, peut-être que l'interface d'Express 100 est grillée ; réessayez plus tard.
Il se peut que le numéro de commande vienne tout juste d'être généré et qu'il n'y ait pas encore de données pour Express 100.
Actuellement, aucune API REST fiable pour l’interface de requête SF Express n’a été trouvée.
Nous prévoyons actuellement de modifier l'API express. Il semble qu'Express Bird soit un meilleur choix (prend en charge le push), mais il nécessite une authentification par nom réel...
yyets
est utilisé pour obtenir le lien de téléchargement correct en cliquant sur le InlineKeyboardButton, mais la condition préalable est qu'il ne puisse y avoir qu'un seul résultat de recherche (seul le premier est renvoyé pour plusieurs résultats, query
est utilisée pour récupérer toutes les informations) ; Par exemple, si je souhaite télécharger The Dark Knight Rises de Nolan, je peux trouver le nom unique via query
, puis utiliser /yyets 《蝙蝠侠:黑暗骑士崛起》(The Dark Knight Rises)
pour obtenir le résultat unique.
Trier par état d'achèvement et priorité
/start 123,123
virgule demi-largeur en anglais InsecureRequestWarning
est actuellement désactivé GPLv2