disagreement 0.0.1__py3-none-any.whl → 0.1.0rc1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. disagreement/__init__.py +8 -3
  2. disagreement/audio.py +116 -0
  3. disagreement/client.py +176 -6
  4. disagreement/color.py +50 -0
  5. disagreement/components.py +2 -2
  6. disagreement/errors.py +13 -8
  7. disagreement/event_dispatcher.py +102 -45
  8. disagreement/ext/__init__.py +0 -0
  9. disagreement/ext/app_commands/__init__.py +46 -0
  10. disagreement/ext/app_commands/commands.py +513 -0
  11. disagreement/ext/app_commands/context.py +556 -0
  12. disagreement/ext/app_commands/converters.py +478 -0
  13. disagreement/ext/app_commands/decorators.py +569 -0
  14. disagreement/ext/app_commands/handler.py +627 -0
  15. disagreement/ext/commands/__init__.py +57 -0
  16. disagreement/ext/commands/cog.py +155 -0
  17. disagreement/ext/commands/converters.py +175 -0
  18. disagreement/ext/commands/core.py +497 -0
  19. disagreement/ext/commands/decorators.py +192 -0
  20. disagreement/ext/commands/errors.py +76 -0
  21. disagreement/ext/commands/help.py +37 -0
  22. disagreement/ext/commands/view.py +103 -0
  23. disagreement/ext/loader.py +54 -0
  24. disagreement/ext/tasks.py +182 -0
  25. disagreement/gateway.py +67 -21
  26. disagreement/http.py +104 -3
  27. disagreement/models.py +308 -1
  28. disagreement/shard_manager.py +2 -0
  29. disagreement/utils.py +10 -0
  30. disagreement/voice_client.py +42 -0
  31. {disagreement-0.0.1.dist-info → disagreement-0.1.0rc1.dist-info}/METADATA +47 -33
  32. disagreement-0.1.0rc1.dist-info/RECORD +52 -0
  33. disagreement-0.0.1.dist-info/RECORD +0 -32
  34. {disagreement-0.0.1.dist-info → disagreement-0.1.0rc1.dist-info}/WHEEL +0 -0
  35. {disagreement-0.0.1.dist-info → disagreement-0.1.0rc1.dist-info}/licenses/LICENSE +0 -0
  36. {disagreement-0.0.1.dist-info → disagreement-0.1.0rc1.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: disagreement
3
- Version: 0.0.1
3
+ Version: 0.1.0rc1
4
4
  Summary: A Python library for the Discord API.
5
5
  Author-email: Slipstream <me@slipstreamm.dev>
6
6
  License: BSD 3-Clause
@@ -60,29 +60,33 @@ Requires Python 3.11 or newer.
60
60
  ```python
61
61
  import asyncio
62
62
  import os
63
+
63
64
  import disagreement
65
+ from disagreement.ext import commands
66
+
67
+
68
+ class Basics(commands.Cog):
69
+ def __init__(self, client: disagreement.Client) -> None:
70
+ super().__init__(client)
71
+
72
+ @commands.command()
73
+ async def ping(self, ctx: commands.CommandContext) -> None:
74
+ await ctx.reply("Pong!")
75
+
76
+
77
+ token = os.getenv("DISCORD_BOT_TOKEN")
78
+ if not token:
79
+ raise RuntimeError("DISCORD_BOT_TOKEN environment variable not set")
80
+
81
+ client = disagreement.Client(token=token, command_prefix="!")
82
+ client.add_cog(Basics(client))
83
+
84
+
85
+ async def main() -> None:
86
+ await client.run()
64
87
 
65
- # Ensure DISCORD_BOT_TOKEN is set in your environment
66
- client = disagreement.Client(token=os.environ.get("DISCORD_BOT_TOKEN"))
67
-
68
- @client.on_event('MESSAGE_CREATE')
69
- async def on_message(message: disagreement.Message):
70
- print(f"Received: {message.content} from {message.author.username}")
71
- if message.content.lower() == '!ping':
72
- await message.reply('Pong!')
73
-
74
- async def main():
75
- if not client.token:
76
- print("Error: DISCORD_BOT_TOKEN environment variable not set.")
77
- return
78
- try:
79
- async with client:
80
- await asyncio.Future() # run until cancelled
81
- except KeyboardInterrupt:
82
- print("Bot shutting down...")
83
- # Add any other specific exception handling from your library, e.g., disagreement.AuthenticationError
84
-
85
- if __name__ == '__main__':
88
+
89
+ if __name__ == "__main__":
86
90
  asyncio.run(main())
87
91
  ```
88
92
 
@@ -117,21 +121,20 @@ setup_logging(logging.DEBUG, file="bot.log")
117
121
  ### Defining Subcommands with `AppCommandGroup`
118
122
 
119
123
  ```python
120
- from disagreement.ext.app_commands import AppCommandGroup
124
+ from disagreement.ext.app_commands import AppCommandGroup, slash_command
125
+ from disagreement.ext.app_commands.context import AppCommandContext
126
+
127
+ settings_group = AppCommandGroup("settings", "Manage settings")
128
+ admin_group = AppCommandGroup("admin", "Admin settings", parent=settings_group)
121
129
 
122
- settings = AppCommandGroup("settings", "Manage settings")
123
130
 
124
- @settings.command(name="show")
125
- async def show(ctx):
126
- """Displays a setting."""
131
+ @slash_command(name="show", description="Display a setting.", parent=settings_group)
132
+ async def show(ctx: AppCommandContext, key: str):
127
133
  ...
128
134
 
129
- @settings.group("admin", description="Admin settings")
130
- def admin_group():
131
- pass
132
135
 
133
- @admin_group.command(name="set")
134
- async def set_setting(ctx, key: str, value: str):
136
+ @slash_command(name="set", description="Update a setting.", parent=admin_group)
137
+ async def set_setting(ctx: AppCommandContext, key: str, value: str):
135
138
  ...
136
139
  ## Fetching Guilds
137
140
 
@@ -146,13 +149,20 @@ roles = await client.fetch_roles(guild.id)
146
149
 
147
150
  ## Sharding
148
151
 
149
- To run your bot across multiple gateway shards, pass `shard_count` when creating
152
+ To run your bot across multiple gateway shards, pass ``shard_count`` when creating
150
153
  the client:
151
154
 
152
155
  ```python
153
156
  client = disagreement.Client(token=BOT_TOKEN, shard_count=2)
154
157
  ```
155
158
 
159
+ If you want the library to determine the recommended shard count automatically,
160
+ use ``AutoShardedClient``:
161
+
162
+ ```python
163
+ client = disagreement.AutoShardedClient(token=BOT_TOKEN)
164
+ ```
165
+
156
166
  See `examples/sharded_bot.py` for a full example.
157
167
 
158
168
  ## Contributing
@@ -161,3 +171,7 @@ Contributions are welcome! Please open an issue or submit a pull request.
161
171
 
162
172
  See the [docs](docs/) directory for detailed guides on components, slash commands, caching, and voice features.
163
173
 
174
+ ## License
175
+
176
+ This project is licensed under the BSD 3-Clause license. See the [LICENSE](LICENSE) file for details.
177
+
@@ -0,0 +1,52 @@
1
+ disagreement/__init__.py,sha256=hGvjtT1V8PPnxXYN_86hYZkHBvyP6u-tIoKD_4ZaJwo,1069
2
+ disagreement/audio.py,sha256=P6inobI8CNhNVkaRKU58RMYtLq1RrSREioF0Mui5VlA,3351
3
+ disagreement/cache.py,sha256=juabGFl4naQih5OUIVN2aN-vAfw2ZC2cI38s4nGEn8U,1525
4
+ disagreement/client.py,sha256=hwZtargXv4awVylzQMQUlb1WNWpvuICf5sIBK8Tn0bc,51858
5
+ disagreement/color.py,sha256=XK0Cw-q0_R5JMbHI1PNQeh1885TSplUHcLe2xF-oGho,1443
6
+ disagreement/components.py,sha256=tEYJ2RHVpIFtZuPPxZ0v8ssUw_x7ybhYBzHNsRiXXvU,5250
7
+ disagreement/enums.py,sha256=LLeXdYKcx4TUhlojNV5X4NDuvscMbnteWRNW79d0C2c,9668
8
+ disagreement/error_handler.py,sha256=c2lb6aTMnhTtITQuR6axZUtEaasYKUgmdSxAHEkeq50,1028
9
+ disagreement/errors.py,sha256=XiYVPy8uFUGVi_EIf81yK7QbC7KyN4JHplSJSWw2RRk,3185
10
+ disagreement/event_dispatcher.py,sha256=mp4LVhIj0SW1P2NruqbYpZoYH33X5rXvkAl3-RK40kE,11460
11
+ disagreement/gateway.py,sha256=mhFtBm_YPtbleQJklv3ph3DXE4LZxC1BhtNkd7Y-akQ,23113
12
+ disagreement/http.py,sha256=uFKowJZYmguz_fe9PWEh6tfq2rvcEUUy2Abbqx9h-T0,27534
13
+ disagreement/hybrid_context.py,sha256=VYCmcreTZdPBU9v-Cy48W38vgWO2t8nM2ulC6_z4HjU,1095
14
+ disagreement/i18n.py,sha256=1L4rcFuKP0XjHk9dVwbNh4BkLk2ZlxxZ_-tecGWa9S0,718
15
+ disagreement/interactions.py,sha256=corwLVsbWM2JXHk5u8VR_Qp3GINLcKFo2y7dyI53QFA,21645
16
+ disagreement/logging_config.py,sha256=4q6baQPE6X_0lfaBTFMU1uqc03x5SbJqo2hsApdDFac,686
17
+ disagreement/models.py,sha256=v_BfG7waYmzwouJUP6w3V94Y1lRR6AgyGvAaiZX_K1Y,71173
18
+ disagreement/oauth.py,sha256=TfDdCwg1J7osM9wDi61dtNBA5BrQk5DeQrrHsYycH34,2810
19
+ disagreement/permissions.py,sha256=7g5cIlg-evHXOL0-pmtT5EwqcB-stXot1HZSLz724sE,3008
20
+ disagreement/rate_limiter.py,sha256=ubwR_UTPs2MotipBdtqpgwQKx0IHt2I3cdfFcXTFv7g,2521
21
+ disagreement/shard_manager.py,sha256=e9F8tx_4IEOlTX3-S3t51lfJToc6Ue3RVBzoNAiVKxs,2161
22
+ disagreement/typing.py,sha256=_1oFWfZ4HyH5Q3bnF7CO24s79z-3_B5Qb69kWiwLhhU,1242
23
+ disagreement/utils.py,sha256=Nj6rx--KnWCaamRHj1B2OXsZCznaMLrNdce-XY3YDg0,220
24
+ disagreement/voice_client.py,sha256=i_67gJ-SQWi9YH-pgtFM8N0lCYznyuQImyL-mf2O7KQ,5384
25
+ disagreement/ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ disagreement/ext/loader.py,sha256=9_uULvNAa-a6UiaeQhWglwgIrHEPKbf9bnWtSL1KV5Q,1408
27
+ disagreement/ext/tasks.py,sha256=4MueuF6r9iPJ-2cEOw1A8tgn6SCetQc6Sr442-g8OrQ,5591
28
+ disagreement/ext/app_commands/__init__.py,sha256=DQ3vHz2EaJ_hTlvFRpRSofPlCuFueRoLgLriECI5xFg,991
29
+ disagreement/ext/app_commands/commands.py,sha256=cY9gyXovnyBIEWmhUPe8YZfw_WXCA1qXWDWTMmX_Vm8,24095
30
+ disagreement/ext/app_commands/context.py,sha256=Xcm4Ka5K5uTQGviixF5LeCDdOdF9YQS5F7lZi2m--8s,20831
31
+ disagreement/ext/app_commands/converters.py,sha256=J1VEmo-7H9K7kGPJodu5FX4RmFFI1BuzhlQAEs2MsD4,21036
32
+ disagreement/ext/app_commands/decorators.py,sha256=smgx5RHedmgn7wxhBza78rQo5Guz8PEDDOvK5niJlMc,23236
33
+ disagreement/ext/app_commands/handler.py,sha256=XO9yLgcV7aIxzhTMgFcQ1Tbr4GRZRfDBzkIAkiu6mw8,26045
34
+ disagreement/ext/commands/__init__.py,sha256=HxZWVfc4qvP_bCRbKTVZoMqXFq19Gj4mQvRumvQiApQ,1130
35
+ disagreement/ext/commands/cog.py,sha256=U57yMrUpqj3_-W1-koyfGgH43MZG_JzJOl46kTur7iA,6636
36
+ disagreement/ext/commands/converters.py,sha256=mh8xJr1FIiah6bdYy0KsdccfYcPii2Yc_IdhzCTw5uE,5864
37
+ disagreement/ext/commands/core.py,sha256=SAHvmhFKmsPWP-h3SzZ_sS2U8BSyM0clURqtfrGV8T0,19144
38
+ disagreement/ext/commands/decorators.py,sha256=Ox_D9KCFtMa-RiljFjOcsPb3stmDStRKeLw1DVeOdAw,6608
39
+ disagreement/ext/commands/errors.py,sha256=cG5sPA-osUq2gts5scrl5yT-BHEYVHLTb4TULjAmbaY,2065
40
+ disagreement/ext/commands/help.py,sha256=yw0ydupOsPwmnhsIIoxa93xjj9MAcBcGfD8BXa7V8G8,1456
41
+ disagreement/ext/commands/view.py,sha256=3Wo4gGJX9fb65qw8yHFwMjnAeJvMJAx19rZNHz-ZDUs,3315
42
+ disagreement/ui/__init__.py,sha256=PLA6eHiq9cu7JDOKS-7MKtaFhlqswjbI4AEUlpnbgO0,307
43
+ disagreement/ui/button.py,sha256=GHbY3-yMrvv6u674-qYONocuC1e2a0flEWjPKwJXKDo,3163
44
+ disagreement/ui/item.py,sha256=bm-EmQEZpe8Kt8JrRw-o0uQdccgjErORcFsBqaXOcV8,1112
45
+ disagreement/ui/modal.py,sha256=FLWFy_VkZ9UAPumX3Q_bT0q7M06O1Q7XzBLhCZyhYhI,4120
46
+ disagreement/ui/select.py,sha256=XjWRlWkA09QZaDDLn-wDDOWIuj0Mb4VCWJEOAaExZXw,3018
47
+ disagreement/ui/view.py,sha256=QhWoYt39QKXwl1X6Mkm5gNNEqd8bt7O505lSpiG0L04,5567
48
+ disagreement-0.1.0rc1.dist-info/licenses/LICENSE,sha256=zfmtgJhVFHnqT7a8LAQFthXu5bP7EEHmEL99trV66Ew,1474
49
+ disagreement-0.1.0rc1.dist-info/METADATA,sha256=cFNTwfEbF3wsGzTBw16ZjYgNZbjDOexCsLlI3bSsxxE,4830
50
+ disagreement-0.1.0rc1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
51
+ disagreement-0.1.0rc1.dist-info/top_level.txt,sha256=t7FY_3iaYhdB6X6y9VybJ2j7UZbVeRUe9wRgH8d5Gtk,13
52
+ disagreement-0.1.0rc1.dist-info/RECORD,,
@@ -1,32 +0,0 @@
1
- disagreement/__init__.py,sha256=ylGJLwgNmt7B71khVq2O0fG__4kjnkA35rZFX5tEDrk,907
2
- disagreement/cache.py,sha256=juabGFl4naQih5OUIVN2aN-vAfw2ZC2cI38s4nGEn8U,1525
3
- disagreement/client.py,sha256=pFXj7z7R1kJWz3_GWOzDYrF1S-nQ1agjcXnRTSh-PWE,45820
4
- disagreement/components.py,sha256=W_R9iMETkQj6sr-Lzk2n7hLwLNaLWT4vBPArIPHQUNc,5232
5
- disagreement/enums.py,sha256=LLeXdYKcx4TUhlojNV5X4NDuvscMbnteWRNW79d0C2c,9668
6
- disagreement/error_handler.py,sha256=c2lb6aTMnhTtITQuR6axZUtEaasYKUgmdSxAHEkeq50,1028
7
- disagreement/errors.py,sha256=rCr9jVAzK8wsS6mxieeWpffKhTDX--sHuOBz45kwsAA,3215
8
- disagreement/event_dispatcher.py,sha256=BevGAi72qXAHN_FqCOSdvVhOhINLeI2ojyVLmvrSKJ0,9851
9
- disagreement/gateway.py,sha256=V46WyZE1duVEvVcBYsaThWd60Xg9T2Qsqu9Y02rQwXo,21315
10
- disagreement/http.py,sha256=1lHIEq2RRVOzzSpfj9TNGprJsMW_nhbj_8-fPr0IupI,23986
11
- disagreement/hybrid_context.py,sha256=VYCmcreTZdPBU9v-Cy48W38vgWO2t8nM2ulC6_z4HjU,1095
12
- disagreement/i18n.py,sha256=1L4rcFuKP0XjHk9dVwbNh4BkLk2ZlxxZ_-tecGWa9S0,718
13
- disagreement/interactions.py,sha256=corwLVsbWM2JXHk5u8VR_Qp3GINLcKFo2y7dyI53QFA,21645
14
- disagreement/logging_config.py,sha256=4q6baQPE6X_0lfaBTFMU1uqc03x5SbJqo2hsApdDFac,686
15
- disagreement/models.py,sha256=TMvGP17h1LK72SlA4vNUId76LdonKAUCTzqeNJRFzVQ,61475
16
- disagreement/oauth.py,sha256=TfDdCwg1J7osM9wDi61dtNBA5BrQk5DeQrrHsYycH34,2810
17
- disagreement/permissions.py,sha256=7g5cIlg-evHXOL0-pmtT5EwqcB-stXot1HZSLz724sE,3008
18
- disagreement/rate_limiter.py,sha256=ubwR_UTPs2MotipBdtqpgwQKx0IHt2I3cdfFcXTFv7g,2521
19
- disagreement/shard_manager.py,sha256=R0HXruJ0Wda_3ftTztQx7kpI182jyuAMsjU6fDtz8Us,2039
20
- disagreement/typing.py,sha256=_1oFWfZ4HyH5Q3bnF7CO24s79z-3_B5Qb69kWiwLhhU,1242
21
- disagreement/voice_client.py,sha256=KdFEH8PI6v45olTYoW_-DVOuTCk8SGg7BgSzxOQsILs,3869
22
- disagreement/ui/__init__.py,sha256=PLA6eHiq9cu7JDOKS-7MKtaFhlqswjbI4AEUlpnbgO0,307
23
- disagreement/ui/button.py,sha256=GHbY3-yMrvv6u674-qYONocuC1e2a0flEWjPKwJXKDo,3163
24
- disagreement/ui/item.py,sha256=bm-EmQEZpe8Kt8JrRw-o0uQdccgjErORcFsBqaXOcV8,1112
25
- disagreement/ui/modal.py,sha256=FLWFy_VkZ9UAPumX3Q_bT0q7M06O1Q7XzBLhCZyhYhI,4120
26
- disagreement/ui/select.py,sha256=XjWRlWkA09QZaDDLn-wDDOWIuj0Mb4VCWJEOAaExZXw,3018
27
- disagreement/ui/view.py,sha256=QhWoYt39QKXwl1X6Mkm5gNNEqd8bt7O505lSpiG0L04,5567
28
- disagreement-0.0.1.dist-info/licenses/LICENSE,sha256=zfmtgJhVFHnqT7a8LAQFthXu5bP7EEHmEL99trV66Ew,1474
29
- disagreement-0.0.1.dist-info/METADATA,sha256=r9liBFa4OLtdW91XF2A7yJ7VcaOiBkmRbKVG74NEsHc,4533
30
- disagreement-0.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
31
- disagreement-0.0.1.dist-info/top_level.txt,sha256=t7FY_3iaYhdB6X6y9VybJ2j7UZbVeRUe9wRgH8d5Gtk,13
32
- disagreement-0.0.1.dist-info/RECORD,,