A modern, easy to use, feature-rich, and async ready API wrapper for Discord's user API written in Python.
These changes have become too numerous to mention, so check out our docs.
Credits:
- Rapptz for the original library this fork is based on. Without it, the project would not exist.
- arandomnewaccount for help when the project was first started.
- dolfies Producer of the original discord.py-self.
- Modern Pythonic API using
async
andawait
. - Proper rate limit handling.
- Optimised in both speed and memory.
- Mostly compatible with the upstream
discord.py
. - Prevents user account automation detection.
- (not original) Reduce the amount of logging that overwhelms the console, such as rate limits.
- (not original) Fixed problem of not replying to own messages (need to add code to prevent looping).
- (not original) Reduce account disabling due to age restrictions.
- (not original) Fix the build number and related information to stabilize and reduce captchas when joining guilds as much as possible.
- (not original) Optimized transmission of voice packets.
- Implements vast amounts of the user account-specific API. For a non-exhaustive list
- Sessions
- Read states
- Connections
- Relationships
- Experiments
- Protobuf user settings
- Application/team management
- Store/SKUs/entitlements
- Billing (e.g. subscriptions, payments, boosts, promotions, etc.)
- Interactions (slash commands, buttons, etc.)
- Mimic traffic from Android clients (this will help you avoid scoring by Cloudflare and improve the quality of your account).
- (TBD) We will further strengthen this by implementing science requests from specific Android clients. Requests from Android clients are consistent across versions, unlike requests from browsers, making it difficult to identify them as self-bots.
- And more!
Python 3.8 or higher is required.
To install, do the following:
$ git clone https://github.com/lolinekord/discord.py-self
$ cd discord.py-self
$ python3 -m pip install -U .[voice]
or
$ pip install git+https://github.com/lolinekord/discord.py-self.git
- PyNaCl (for voice support)
Please note that on Linux installing voice you must install the following packages via your favourite package manager (e.g. apt
, dnf
, etc) before running the above commands:
- libffi-dev (or
libffi-devel
on some systems) - python-dev (e.g.
python3.6-dev
for Python 3.6)
If you would like to use the library alongside upstream discord.py
, you can install selfcord.py
instead of discord.py-self
. Check out the renamed branch for more information.
import discord
class MyClient(discord.Client):
async def on_ready(self):
print('Logged on as', self.user)
async def on_message(self, message):
# only respond to ourselves
if message.author != self.user:
return
if message.content == 'ping':
await message.channel.send('pong')
client = MyClient()
client.run('token')
import discord
from discord.ext import commands
bot = commands.Bot(command_prefix='>', self_bot=True)
@bot.command()
async def ping(ctx):
await ctx.send('pong')
bot.run('token')
You can find more examples in the examples directory.