why2lyj/youxiang-Itchat for Scheduled WeChat Coupon Delivery
无视微信Web无法登录问题。获取淘宝优惠券、京东优惠券、拼多多(多多客)优惠券、苏宁易购优惠券、唯品会优惠券,通过接入淘宝联盟、京东联盟、拼多多(多多进宝)、苏宁联盟(苏宁推客)、唯品会及其对应的开放平台,获取优惠商品图片和对应商品信息,利用微信机器人推送到指定群聊。
At a glance
- What is it?
- why2lyj/youxiang-Itchat connects affiliate APIs to WeChat groups through its custom itchat-uos client. It fits operators willing to manage platform credentials and group schedules, but parts of the documented feature set are unavailable, unfinished, or moved to another implementation.
- Who is it for?
- Adopt this repository only if you need the documented itchat-uos coupon bot, have the required affiliate credentials, and accept responsibility for its provider and WeChat login dependencies. Do not adopt it as a complete multi-platform coupon system: the README says Pinduoduo is temporarily unavailable, Vipshop is unfinished, and the project has migrated to a python-wechaty version.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 94 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Why youxiang-Itchat Exists
why2lyj/youxiang-Itchat addresses a narrow automation problem: finding affiliate products across several Chinese shopping platforms and repeatedly publishing their images and links to selected WeChat groups. Its intended user is an individual operator or group administrator who already has access to affiliate platforms such as Taobao Union, JD Union, Pinduoduo Duoduojinbao, Suning Union, or Vipshop. The project is not a general shopping assistant or a hosted coupon service. The operator supplies platform credentials, promotion identifiers, material identifiers, schedules, and destination group names.
The repository description presents the workflow plainly: establish a WeChat group, send promotional links and product images, and let group members decide whether to use them. The README also retains selected features inherited from EverydayWechat, including automatic replies to multiple WeChat friends and group-assistant responses for new members and mentions. However, it explicitly says that only Tencent's intelligent chat capability remains in the automatic-reply feature. That makes this primarily a coupon distribution bot with some message-response behavior, rather than a full personal-assistant platform.
The operator must prepare each WeChat group in advance. The README says the group name must already exist and be saved in the address book before running the program. Exact group-name matching is therefore part of the operating model. A mismatch, a renamed group, or an unsaved contact can prevent the configured distribution job from reaching its intended destination.
Affiliate API Jobs and Message Flow
The architecture visible in the repository is a Python application with provider-specific coupon modules under `coupon/`, chat handling under `chat/`, shared utilities under `untils/`, `main.py` as the entry point, and `_config.yaml` for settings. The README describes the operational flow as a scheduled task: read configured affiliate information, obtain promotional product data, generate the corresponding image and product details, then send that content to configured WeChat groups.
APScheduler is pinned in `requirements.txt`, which matches the README's schedule fields. Each enabled provider has an `is_open` switch, platform credentials, a promotion or site identifier, a list of destination groups, and comma-separated `minute` and `hour` values. Taobao additionally requires `adzone_id` and `group_material_id`. JD requires `site_id` and `group_material_id`. Suning requires `ad_book_id`; its `group_material_id` field is described as retained but unused. Pinduoduo uses `site_id` for the generated `pid`, while its `group_material_id` is also described as unused.
The group configuration is expressed as a mapping containing `group_name`, `group_material_id`, `minute`, and `hour`. One documented example sends Taobao material `19810` every hour at minutes 10 and 40 from 7 through 23 to the group named `口碑KFC必胜客麦当劳优惠券`. Another sends materials `3767,27448,13367,3788` at minute 30 during hours 9, 12, and 15. These examples show that scheduling and material selection are configured independently rather than embedded in source code.
Provider support is uneven. The README labels the Pinduoduo interface as awaiting an update and temporarily unavailable. It labels Vipshop support as unfinished and says the author no longer intends to continue it. The project also states that it has fully migrated to a non-Web `python-wechaty` version and that only bug fixes will be maintained. That statement substantially changes how this repository should be evaluated: the code and documentation may describe the older itchat implementation, while the current maintenance focus belongs to a different version.
Installing the Python Client and Dependencies
The README instructs users to download or clone the repository, install the pinned dependencies, and start `main.py`. The repository badge identifies Python 3.13, and the Dockerfile uses `python:3.13-alpine`. The web login compatibility note specifically calls for `itchat-uos==1.5.0.dev`, rather than the ordinary `itchat` package.
The first installation command is:
pip3 install -r requirements.txtThis reads `requirements.txt`, which pins APScheduler, `itchat-uos`, `pyzbar`, Pillow, `suning-sdk`, PyYAML, and requests. The README then directs the operator to start the program:
python main.pyThe expected first visible step is a WeChat QR code for scanning. Before running it, the operator must edit `_config.yaml` with the applicable provider credentials, promotion identifiers, material identifiers, schedules, and group names. The README does not show a complete configuration file, so inspect `_config.yaml` directly rather than reconstructing missing keys.
The Docker route requires an already configured `_config.yaml`. Build the image from the repository directory:
FROM python:3.13-alpineThe documented build command is:
docker build -f Dockerfile -t youxiang:1.0.0 .Then start the container:
docker run -it -d --name youxiang youxiang:1.0.0Read its logs to obtain the login QR code:
docker logs -f --tail=1000 youxiangThe Dockerfile sets `Asia/Shanghai` as the container time zone and installs `zbar`, which supports the QR-code and image-processing dependencies. It also sets `python /youxiang/main.py` as the container entry point.
Configuration Boundaries for Each Shopping Platform
Configuration is the main adoption barrier because the credentials and identifiers are external prerequisites, not values generated by the project. Taobao requires an `app_key`, `app_secret`, and `adzone_id`; the README links to the Taobao Union application page and API documentation. JD requires an `app_key`, `app_secret`, `site_id`, and a `suowo` token for its link-shortening path. The JD site ID is described as the website ID or APP ID in the affiliate management area, and the README notes that obtaining it may require a registered website or an actual app.
JD promotion links use the Suowo service because the project says access to JD's own short-link interface has a high application threshold. The README contrasts a `u.jd.com` short address with a `suo.mi` address and notes that Suowo changed its domain to `suowo.cn` in July 2020 while retaining the old domain. This design adds an external dependency to every JD message path. The operator must evaluate whether that short-link service remains acceptable for the intended distribution.
Suning uses the official `suning-sdk`, with `appKey`, `secretKey`, and `ad_book_id`. The README points to a PDF stored in `images/` for the platform's API integration guidance. Pinduoduo requires a `Client_id`, `Client_secret`, and a `pid` generated through the Duoduojinbao promotion interface. The README states that the Pinduoduo API has a daily call limit of 5000 requests. That limit may constrain repeated scheduled jobs, particularly when several groups receive the same material.
Vipshop is not a practical initial target. The README says access requires an institutional account, the account application requires a business license, and the author did not have one. It also says the author waited nearly a month for a response and then stopped development. The documented alternative is 订单侠, described as an official-recommended route for people without the required account qualification. No code example for that path is supplied.
Login, Scheduling, and Operational Failure Modes
The repository addresses WeChat Web login failure with a custom package rather than presenting an official or durable login protocol. The README specifically instructs users who cannot log in through the Web version to install `itchat-uos==1.5.0.dev`, and the repository links to a custom `ItChat-UOS` project. That dependency may solve the stated compatibility problem, but the README does not document token renewal, account restrictions, session recovery, or what happens after the remote service changes. Those operational questions remain undocumented.
The scheduling model is explicit but unforgiving. `minute` and `hour` are comma-separated strings, and the README warns readers to watch spacing. The example `hour: '7-23'` expresses a range, while `hour: '9,12,15'` expresses selected hours. The material IDs are also comma-separated. A malformed schedule can cause the job not to fire at the intended times, and the documentation does not provide a validation command or a dry-run mode. Operators must inspect the exact YAML values themselves.
Provider failure is a more serious boundary. Affiliate APIs can require application approval, registered domains, existing apps, or institutional accounts. The README also says the Pinduoduo interface is temporarily unavailable and Vipshop support is unfinished. A successful Python startup therefore does not establish that every coupon source works. The first meaningful verification is provider by provider: open one source, select one material, target one known group, and confirm that the expected message appears.
The migration notice creates a separate maintenance concern. The README says the project has fully moved to a `python-wechaty` version and will receive only bug fixes. The listed default branch and current repository layout still include `main.py`, `_config.yaml`, `chat/`, `coupon/`, and `untils/`, so this checkout presents the older itchat-oriented implementation. Anyone planning long-term operation should first establish whether this branch is intended for compatibility testing or whether the newer implementation is the appropriate code line.
Why It Differs from EverydayWechat and Direct API Scripts
The closest documented reference is EverydayWechat, from which this project retains selected chat functions and takes the coupon-distribution approach as its main addition. The difference is the insertion of scheduled affiliate retrieval between the WeChat session and the destination group. EverydayWechat is not presented as a complete alternative for coupon automation; it is the source project for the retained message and group-assistant capabilities.
A direct API script would call one provider, print or save returned products, and leave group delivery to a separate process. youxiang-Itchat combines provider credentials, scheduled execution, material selection, product images, and WeChat delivery in one application. That is useful for an operator who wants a single group-oriented workflow, but it also concentrates several external dependencies in one process. A provider outage, invalid credential, incorrect group name, or failed QR-code login can affect the overall run.
The `python-wechaty` implementation named in the migration notice represents another approach to the same broad task. It uses a different WeChat automation layer, while this repository's documented installation uses `itchat-uos`. The README does not provide a feature-by-feature comparison, so the choice cannot be presented as a claim about reliability or feature coverage. The documented difference is the client architecture and the fact that this repository's own README says it has moved away from the Web version.
Maintenance, License, and Adoption Scope
The repository is not archived, and its last push was on 2026-07-21. That supports describing the checkout as recently updated, but it does not establish that every listed provider remains compatible. The repository has no GitHub releases, so there is no release stream to use for upgrade compatibility or migration notes. The README's migration statement is more consequential than the push date: it says the project has completely migrated to a non-Web `python-wechaty` version and that only bug fixes will be maintained.
The license status is unknown in the repository metadata, and the README does not present a standard software license file in the listed contents. Its declaration says commercial use of the tool is prohibited and that legal disputes are unrelated to the author. That statement is not a substitute for a formal license grant. Anyone considering redistribution, modification, or commercial deployment needs to resolve the licensing status separately, but this review does not provide legal advice.
The sensible adoption boundary is narrow. Choose this project if you need the documented itchat-uos workflow, can obtain the required affiliate credentials, can keep group names and schedules under control, and are prepared to verify each provider independently. Avoid it if you need a maintained all-platform service, a documented rollback path, or a complete Vipshop implementation. Before using it, check `requirements.txt`, inspect `_config.yaml`, run `python main.py`, and verify one enabled Taobao or JD schedule before enabling additional sources.
Editorial conclusion
Adopt this repository only if you need the documented itchat-uos coupon bot, have the required affiliate credentials, and accept responsibility for its provider and WeChat login dependencies. Do not adopt it as a complete multi-platform coupon system: the README says Pinduoduo is temporarily unavailable, Vipshop is unfinished, and the project has migrated to a python-wechaty version. Before adoption, verify `main.py`, `_config.yaml`, API approval status, WeChat login behavior, and licensing, beginning with `itchat-uos==1.5.0.dev` and `requirements.txt`.
Frequently asked questions
How do I install why2lyj/youxiang-Itchat for WeChat login?
Install the repository dependencies with `pip3 install -r requirements.txt`. The requirements file pins `itchat-uos==1.5.0.dev`, which the README identifies for users unable to log in through the WeChat Web version.
What configuration does why2lyj/youxiang-Itchat need before it can send coupons?
Configure the applicable provider credentials and identifiers in `_config.yaml`, along with `group_name`, `group_material_id`, `minute`, and `hour`. The README says the WeChat group must already exist and be saved in the address book.
Is the Pinduoduo coupon feature currently available in why2lyj/youxiang-Itchat?
No. The README marks the Pinduoduo interface as awaiting an update and temporarily unavailable. Its configuration still documents `Client_id`, `Client_secret`, and the `pid` promotion position.
Can I run why2lyj/youxiang-Itchat with Docker?
Yes. The README documents building `youxiang:1.0.0` with the repository `Dockerfile` and running a container from that image. It requires `_config.yaml` to be configured before startup and uses `docker logs -f --tail=1000 youxiang` to retrieve the login QR code.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/why2lyj-youxiang-itchat)Was this useful?