A Python wrapper for the WooCommerce API.

Overview

WooCommerce API - Python Client

A Python wrapper for the WooCommerce REST API. Easily interact with the WooCommerce REST API using this library.

Installation

pip install woocommerce

Getting started

Generate API credentials (Consumer Key & Consumer Secret) following this instructions http://woocommerce.github.io/woocommerce-rest-api-docs/#rest-api-keys.

Check out the WooCommerce API endpoints and data that can be manipulated in http://woocommerce.github.io/woocommerce-rest-api-docs/.

Setup

from woocommerce import API

wcapi = API(
    url="http://example.com",
    consumer_key="ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    consumer_secret="cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    version="wc/v3"
)

Options

Option Type Required Description
url string yes Your Store URL, example: http://woo.dev/
consumer_key string yes Your API consumer key
consumer_secret string yes Your API consumer secret
version string no API version, default is wc/v3
timeout integer no Connection timeout, default is 5
verify_ssl bool no Verify SSL when connect, use this option as False when need to test with self-signed certificates
query_string_auth bool no Force Basic Authentication as query string when True and using under HTTPS, default is False
oauth_timestamp integer no Custom timestamp for requests made with oAuth1.0a
wp_api bool no Set to False in order to use the legacy WooCommerce API (deprecated)

Methods

Params Type Description
endpoint string WooCommerce API endpoint, example: customers or order/12
data dictionary Data that will be converted to JSON
**kwargs dictionary Accepts params, also other Requests arguments

GET

  • .get(endpoint, **kwargs)

POST

  • .post(endpoint, data, **kwargs)

PUT

  • .put(endpoint, data), **kwargs

DELETE

  • .delete(endpoint, **kwargs)

OPTIONS

  • .options(endpoint, **kwargs)

Response

All methods will return Response object.

Example of returned data:

>>> r = wcapi.get("products")
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=UTF-8'
>>> r.encoding
'UTF-8'
>>> r.text
u'{"products":[{"title":"Flying Ninja","id":70,...' // Json text
>>> r.json()
{u'products': [{u'sold_individually': False,... // Dictionary data

Request with params example

from woocommerce import API

wcapi = API(
    url="http://example.com",
    consumer_key="ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    consumer_secret="cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    version="wc/v3"
)

# Force delete example.
print(wcapi.delete("products/100", params={"force": True}).json())

# Query example.
print(wcapi.get("products", params={"per_page": 20}).json())

Changelog

2.1.1 - 2019/07/22

  • Updated Request library to 2.22.0.
  • Updated examples.

2.1.0 - 2019/01/15

  • Uses WP REST API by default, need to force wp_api as False in order to use the legacy WooCommerce API.
  • Updated default REST API version to wc/v3.

2.0.0 - 2019/01/15

  • Updated "Requests" library to version 2.20.0.
  • Added support for custom timestamps in oAuth1.0a requests with oauth_timestamp.
  • Allow pass custom arguments to "Requests" library.

1.2.1 - 2016/12/14

  • Fixed WordPress 4.7 compatibility.

1.2.0 - 2016/06/22

  • Added option query_string_auth to allow Basic Auth as query strings.

1.1.1 - 2016/06/03

  • Fixed oAuth signature for WP REST API.

1.1.0 - 2016/05/09

  • Added support for WP REST API.
  • Added method to do HTTP OPTIONS requests.

1.0.5 - 2015/12/07

  • Fixed oAuth filters sorting.

1.0.4 - 2015/09/25

  • Implemented timeout argument for API class.

1.0.3 - 2015/08/07

  • Forced utf-8 encoding on API.__request() to avoid UnicodeDecodeError

1.0.2 - 2015/08/05

  • Fixed handler for query strings

1.0.1 - 2015/07/13

  • Fixed support for Python 2.6

1.0.1 - 2015/07/12

  • Initial version
Comments
  • wcapi.get('orders') returns 403

    wcapi.get('orders') returns 403

    I connect to my WooCommerce webshop through the WooCommerce REST API Python wrapper,

    I.e,

    from woocommerce import API
    
    wcapi = API(
        url="https://mywebshop.whatever",
        consumer_key="ck_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        consumer_secret="cs_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        wp_api=True,
        version="wc/v1"
    )
    

    API has read/write access.

    All worked fine for months up to yesterday.


    Problem

    Since yesterday latest_order = wcapi.get('orders').json() returns a JSONDecodeError: Expecting value. Also, wcapi.get('orders') returns a <Response [403]>.

    I don't know what's causing this all of a sudden and I'm not sure how to solve it either.

    opened by LucSpan 20
  • getting an import error.

    getting an import error.

    after doing the pip install WooCommerce and placing the

    from woocommerce import API

    test = API(values here)

    running this shows this below.

    from woocommerce import API ImportError: cannot import name 'API'

    opened by ecampii 11
  • Issue with authentication consumer key or consumer secret invalid

    Issue with authentication consumer key or consumer secret invalid

    I'm creating credentials using the endpoint /wc-auth/v1/authorize with scope=read_write most times the consumer key and secret that I get are valid, but a couple of times I get consumer key or consumer secrets that are invalid when I try to use them later in code like this:

    wcapi = API(
        url=  shop_url,
        consumer_key= key,
        consumer_secret= secret
    )
    response = wcapi.get("orders?page=1")
    # Then response.text is {"errors":[{"code":"woocommerce_api_authentication_error","message":"Consumer Secret is invalid"}]}
    #  or {"errors":[{"code":"woocommerce_api_authentication_error","message":"Consumer Key is invalid"}]}
    

    Has this issue been detected yet? Is it related to the python wrapper or woocommerce plugin?

    opened by assislucas 10
  • Timeout exception yet uploaded the data

    Timeout exception yet uploaded the data

    I am having a weird issue. I am using API for a Woocommerce setup on my local machine. Onr running I am getting the exceptions:

    Traceback (most recent call last):
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 384, in _make_request
        six.raise_from(e, None)
      File "<string>", line 2, in raise_from
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 380, in _make_request
        httplib_response = conn.getresponse()
      File "/Users/Me/Data/anaconda3/lib/python3.7/http/client.py", line 1321, in getresponse
        response.begin()
      File "/Users/Me/Data/anaconda3/lib/python3.7/http/client.py", line 296, in begin
        version, status, reason = self._read_status()
      File "/Users/Me/Data/anaconda3/lib/python3.7/http/client.py", line 257, in _read_status
        line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
      File "/Users/Me/Data/anaconda3/lib/python3.7/socket.py", line 589, in readinto
        return self._sock.recv_into(b)
    socket.timeout: timed out
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
        timeout=timeout
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 638, in urlopen
        _stacktrace=sys.exc_info()[2])
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/urllib3/util/retry.py", line 368, in increment
        raise six.reraise(type(error), error, _stacktrace)
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/urllib3/packages/six.py", line 686, in reraise
        raise value
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 600, in urlopen
        chunked=chunked)
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 386, in _make_request
        self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 306, in _raise_timeout
        raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
    urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=80): Read timed out. (read timeout=5)
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/Users/Me/Data/Business/NisaaPK/data_uploader_api/uploader.py", line 48, in <module>
        add_product(wcapi)
      File "/Users/Me/Data/Business/NisaaPK/data_uploader_api/uploader.py", line 31, in add_product
        print(wc.post("products", data))
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/woocommerce/api.py", line 112, in post
        return self.__request("POST", endpoint, data, **kwargs)
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/woocommerce/api.py", line 103, in __request
        **kwargs
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/requests/api.py", line 60, in request
        return session.request(method=method, url=url, **kwargs)
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
        resp = self.send(prep, **send_kwargs)
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
        r = adapter.send(request, **kwargs)
      File "/Users/Me/Data/anaconda3/lib/python3.7/site-packages/requests/adapters.py", line 529, in send
        raise ReadTimeout(e, request=request)
    requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=80): Read timed out. (read timeout=5)
    

    When I checked on the site the product was there! This is the code I am using:

    from woocommerce import API
    
    
    def add_product(wc):
        data = {
            "name": "Sample Product",
            "type": "simple",
            "regular_price": "1221.99",
            "sale_price": "921.99",
            "description": "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.",
            "short_description": "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.",
            "categories": [
                {
                    "id": 135
                },
            ],
            "tags": [
    
            ],
            "button_text": "Visit here to buy",
            "images": [
                {
                    "src": "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_front.jpg"
                },
                {
                    "src": "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_back.jpg"
                }
            ],
            "external_url": 'http://adnansiddiqi.me'
        }
        print(wc.post("products", data))
    
    
    if __name__ == '__main__':
        KEY = 'XXX'
        SECRET = 'XXX'
    
        wcapi = API(
            url="http://localhost/shop.ab/",
            consumer_key=KEY,
            consumer_secret=SECRET,
            version="wc/v3"
        )
    
        # r = wcapi.get("products")
        # products = r.json()
        # print(len(products))
        add_product(wcapi)
    
    opened by kadnan 6
  • per_page and all integer parameters does't works

    per_page and all integer parameters does't works

    While trying to get product/categories from Woocommerce I got this error: "per_page is not of type integer"

    my code:

    wcapi = API( url="http://my_web.site", consumer_key="ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXX", consumer_secret="cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXX", version="wc/v3" )

    categories = wcapi.get("products/categories/?per_page=1").json()

    get the same error for all integer parameters

    opened by Damiano-Franco 6
  • woocommerce_api_authentication_error

    woocommerce_api_authentication_error","message":"Consumer Secret is invalid

    When using HTTPS in the API URL parameter below the authentication fails with the error"

    "woocommerce_api_authentication_error","message":"Consumer Secret is invalid".

    HTTP works fine.

    Questions:

    • Any suggestions on how to troubleshoot this?
    • If this is a potential server side configuration issues, do you have any pointers on how to configure it correctly?
    • Could you give me an example of how to use query parameters instead? The WooCommerce REST API documentation hints at an example for servers that not properly parse the Authorization header, but it is actually missing.
    API(
                url="https://kashalife.net/",
                consumer_key   ="ck_16c59a1a0693c2723928830da52a30640c2311fd",
                consumer_secret="cs_0b4e0f17741e024b31d0ef799257b972db473305",
                wp_api=False,
                verify_ssl=False,
                version="v3",
            )
    

    Thanks - Christoph

    opened by chbichsel 6
  • Not working anymore

    Not working anymore

    Hello,

    As of a few months this module does not seem to work anymore, I found the culprit, as it seems to work when I include this header: 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0'. This explains why CURL works, but python requests not anymore.

    Best regards,

    Evert

    opened by Evert-Arends 5
  • Download all Products

    Download all Products

    First thank you very much for this amazing work!!

    I am trying to get all the products and I don' really know how to do it.

    I have tried to do

    wcapi.get('products?per_page=100') But I have more than 100 products

    Furthermore, I have tried to introduce the pagination as it is recommended in the manual, but it does not say how to introduce it in the code...

    I would love if someone could help me out with this.

    Yours sincerely,

    opened by eduaero 5
  • REST authentication error

    REST authentication error

    Hello,

    Having truble authenticating with rest api, all the time I get the same error.

    Wordpress 4.7.4 Woocommerce 3.0.5 Python 2.7.13

    from woocommerce import API
    
    wcapi = API(
        url="http://XYZ/~aclassi2/note/",
        consumer_key="ck_YYY",
        consumer_secret="cs_XXX",
        wp_api=True,
        version="wc/v2",
        verify_ssl=False,
        query_string_auth=True
    )
    
    {"code":"woocommerce_rest_authentication_error","message":"Invalid signature - provided signature does not match.","data":{"status":401}}
    
    

    When I use Postman, it works fine. I also tested with nodeJS, is maybe python lib broken?

    opened by hrvatskibogmars 5
  • Can't use OAuth (API calls over HTTP)

    Can't use OAuth (API calls over HTTP)

    Hi,

    Tested with versions 1.0.1 and 1.0.2, I can't use this library over HTTP. It seems to be related to the OAuth signature generated by the OAuth class.

    Here is my code (adapted from the README example) :

    wcapi = API(
        url="http://0.0.0.0:8080",
        consumer_key=WC_API_KEY,
        consumer_secret=WC_API_SECRET,
        version="v2",
        verify_ssl=False
    )
    
    r = wcapi.get("products")
    
    print(r.status_code)
    print(r.text)
    

    Here is the return :

    401
    {'errors': [{'code': 'woocommerce_api_authentication_error', 'message': 'Signature invalide - la signature fournie ne correspond pas'}]}
    

    (I'm using a French translation of WooCommerce)

    Do I need to force the use of OAuth1 somewhere ?

    Thanks for your help

    opened by Djiit 5
  • api accepts url params and additional keyword args for requests module

    api accepts url params and additional keyword args for requests module

    Currently the url params that are sent to Woo-Commerce are a closed box. They should be exposed outside of the function. Additionally, there are cases where a developer needs to pass additional parameters to the requests library. These should also be exposed outside of the function.

    I've been meaning to make a pull request for this. I have previously sub-classed the woocommerce.api.API object in order to do this and think it would be helpful to others who like me need to do more complicated requests.

    opened by timjen3 4
  • unable to update a product

    unable to update a product

    I am trying to update products in my store. But, the put/post methods do not work at all. The requests are executed but there are no changes in the product's properties. I gave my homepage URL as the url param, and the permalink in the wordpress is set to something like https://my-website.co.il/year/month/day/sample-post/. below is the constructor defined wcapi = API( url=STORE, consumer_key=DEV, consumer_secret=SECRET, wp_api=True, version="wc/v2", query_string_auth=True ) and here is how I update a product wcapi.put("products/4713", data={'price':'0.15'}).json()

    and then it returns the product with old price.

    Actually, the product is not updated and still it does not give an error.

    opened by Irfan-Ahmad-byte 0
  • Add request session

    Add request session

    Issue https://github.com/woocommerce/wc-api-python/issues/76 discusses the performance issue inherent in recreating a full HTTPS connection for every request.

    This PR enables request Session.

    opened by rooprob 0
  • Fetching 'products' fails with a 403 error despite other successful API calls

    Fetching 'products' fails with a 403 error despite other successful API calls

    Hello! Thanks for this library, though I'm having a little trouble retrieving products specifically. I have no trouble retrieving e.g. orders and customers.

    This works:

    import os
    from woocommerce import API
    
    WOOCOMMERCE_API_CONSUMER_KEY = os.environ.get('WOOCOMMERCE_API_CONSUMER_KEY')
    WOOCOMMERCE_API_CONSUMER_SECRET = os.environ.get('WOOCOMMERCE_API_CONSUMER_SECRET')  # noqa
    
    wcapi = API(
        url='https://xxxxxxxx.org',
        consumer_key=WOOCOMMERCE_API_CONSUMER_KEY,
        consumer_secret=WOOCOMMERCE_API_CONSUMER_SECRET,
        version='wc/v3',
        user_agent='PostmanRuntime/7.26.5'
    )
    
    data = wcapi.get('orders')
    # data = wcapi.get('customers')
    
    print(data.status_code)
    

    Trying wcapi.get('products'), however, throws a 403 status code:

    import os
    from woocommerce import API
    
    WOOCOMMERCE_API_CONSUMER_KEY = os.environ.get('WOOCOMMERCE_API_CONSUMER_KEY')
    WOOCOMMERCE_API_CONSUMER_SECRET = os.environ.get('WOOCOMMERCE_API_CONSUMER_SECRET')  # noqa
    
    wcapi = API(
        url='https://xxxxxxxx.org',
        consumer_key=WOOCOMMERCE_API_CONSUMER_KEY,
        consumer_secret=WOOCOMMERCE_API_CONSUMER_SECRET,
        version='wc/v3',
        user_agent='PostmanRuntime/7.26.5'
    )
    
    data = wcapi.get('products')
    
    print(data.status_code)
    

    Any help is much appreciated, thanks!

    opened by cjwinchester 2
  • timeout increased to 10sec

    timeout increased to 10sec

    before timeout set to 5sec its very low some times if network is not good getting this error :

    raise ReadTimeout(e, request=request)
    requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='......', port=....): Read timed out. (read timeout=5)
    

    for every two request i am getting this problem so i increased the timeout to 10 sec...

    Thank you.

    opened by Balaji-Kotni 2
  • low_stock_amount is string

    low_stock_amount is string

    Issue summary

    When I fetch a WooCommerce product using this API, the variable low_stock_amount is an empty string, I believe should be an integer '0'.

    Expected behavior

    Always return an integer. or a 0

    Actual behavior

    It returns an empty string.

    Steps to reproduce the problem

    1. response = wcapi.get('products', params={'sku':sku}).json()
    2. print(response)

    ##Related bug I believe this is a related bug


    opened by jmatah 0
Releases(3.0.0)
  • 3.0.0(Mar 13, 2021)

    2021-03-13

    Removed

    • Removed support to legacy Python versions, now supports Python 3.6+.
    • Removed ordereddict package dependency.

    Added

    • Added support for Python 3.8 and Python 3.9.
    • Added option to set custom user_agent.

    Changed

    • Updated default "User-Agent" to WooCommerce-Python-REST-API/3.0.0.
    • Updated Request library to 2.25.1.

    Fixed

    • Fixed Basic Auth in Python 3.8.
    Source code(tar.gz)
    Source code(zip)
An API wrapper for the file.io web service.

🗃️ File.io An API wrapper for the file.io web service. Install $ pip3 install fileio or

nkot56297 1 Dec 18, 2021
DEPRECATED - Official Python Client for the Discogs API

⚠️ DEPRECATED This repository is no longer maintained. You can still use a REST client like Requests or other third-party Python library to access the

Discogs 483 Dec 31, 2022
A python based Telegram Bot for Compressing Videos with negligible Quality change

𝕍𝕚𝕕𝕖𝕠 ℂ𝕆𝕄ℙℝ𝔼𝕊𝕊𝕆ℝ 𝔹𝕆𝕋 ᴍᴜʟᴛɪғᴜɴᴄᴛɪᴏɴ ǫᴜᴀʟɪᴛʏ ᴄᴏᴍᴘʀᴇssᴏʀ A Telegram Video CompressorBot it compress videos with negligible Quality change.

Danish 154 Dec 04, 2022
Enables you to execute scripts and perform API requests in MikroTik router

HomeAssistant component: MikroTik API The mikrotik_api platform enables you to execute scripts and perform API requests in MikroTik router To enable M

Pavel S 6 Aug 12, 2022
Open Resource Calculator Module for Python

Calculator Module for Python By White Night Install #

White_Night_awa 4 Aug 22, 2022
Visualização de dados do TaxiGov.

Visualização de dados do TaxiGov Este repositório apresenta uma visualização das corridas de táxi do programa TaxiGov do governo federal, realizadas n

Ministério da Economia do Brasil 5 Dec 20, 2022
SpotPlay2YouPlay - Converts new additions to a Spotify playlist to a matching Youtube playlist

SpotPlay2YouPlay - Converts new additions to a Spotify playlist to a matching Youtube playlist, can also be configured to converting whole playlists with the refresh fun

9 Mar 06, 2022
Checks if Minecraft accounts are available, or taken.

MCNameChecker Checks validity of Minecraft IGN's. Using async to make it even faster. Has rate-limit detections and Proxy support Usage Q. How do I us

Dimitri Demarkus 5 Apr 22, 2022
Discord Token Checker

Discord-Token-Checker Optimizations Asynchronous Fast & Efficient Multi Tasked Proxy support (socks4/socks5/http) Usage Put tasks depending on your PC

scripted 6 May 05, 2022
Instagram - Instagram Account Reporting Tool

Instagram Instagram Account Reporting Tool Installation On Termux $ apt update $

Aryan 6 Nov 18, 2022
A Python library wrapping the iFixit (Dozuki) API.

A Python library wrapping the iFixit API. Status Working, but incomplete. Fully tested and documented. Hacking I highly recommend using virtualenv: [$

James Pearson Hughes 13 May 24, 2021
OpenZeppelin Contracts written in Cairo for StarkNet, a decentralized ZK Rollup

OpenZeppelin Cairo Contracts A library for secure smart contract development written in Cairo for StarkNet, a decentralized ZK Rollup. ⚠️ WARNING! ⚠️

OpenZeppelin 592 Jan 04, 2023
Simple script to extract useful informations from the combo BloodHound + Neo4j

bloodhound-quickwin Simple script to extract useful informations from the combo BloodHound + Neo4j. Can help to choose a target. Prerequisites python3

140 Dec 21, 2022
API which returns cusswords , can be used to check cusswords in bots etc.

Anti-abuse-api-flask API which returns cusswords , can be used to check cusswords in bots etc. Run pip install -r requirements.txt py app.py API Endpo

8 Jan 03, 2023
Halcyon is a Matrix bot library created with the intention of being easy to install and use. Inspired by discord.py

Halcyon is a Matrix bot library with the goal of being easy to install and use. The library takes inspiration from discord.py and the Slack li

Wes Ring 19 Jan 06, 2023
Home Assistant for Opendata CWB. Get the weather forecast of the city in Taiwan.

Home assistant support for Opendata CWB. The readme in Traditional Chinese. This integration is based on OpenWeatherMap (@csparpa, pyowm) to develop.

11 Sep 30, 2022
Notion API Database Python Implementation

Python Notion Database Notion API Database Python Implementation created only by database from the official Notion API. Installing / Getting started p

minwook 78 Dec 19, 2022
A Python IRC bot with dynamically loadable modules

pybot This is a modular, plugin-based IRC bot written in Python. Plugins can bedynamically loaded and unloaded at runtime. A design goal is the abilli

Jeff Kent 1 Aug 20, 2021
A Telegram Bot which will ask new Group Members to verify them by solving an emoji captcha.

Emoji-Captcha-Bot A Telegram Bot which will ask new Group Members to verify them by solving an emoji captcha. About API: Using api.abirhasan.wtf/captc

Abir Hasan 52 Dec 11, 2022
IOGen - An Open source discord token generator

_____ ____ _____ |_ _/ __ \ / ____| | || | | | |

0xVichy#1234 85 Nov 03, 2022