move cell toml
This commit is contained in:
151
README.md
Normal file
151
README.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# Cell Discord SDK
|
||||
|
||||
Cell bindings for the Discord Social SDK.
|
||||
|
||||
## Setup
|
||||
|
||||
1. Download the Discord Social SDK from the Discord Developer Portal
|
||||
2. Extract to `discord_social_sdk/` in this directory
|
||||
3. Configure your application in `config.cm`
|
||||
|
||||
## Configuration
|
||||
|
||||
Edit `config.cm` with your Discord application details:
|
||||
|
||||
```javascript
|
||||
return {
|
||||
APPLICATION_ID: 1234567890123456789n, // Your app ID (as BigInt)
|
||||
PUBLIC_KEY: "your_public_key_here",
|
||||
REDIRECT_URI: "http://127.0.0.1/callback",
|
||||
CALLBACK_INTERVAL: 16
|
||||
}
|
||||
```
|
||||
|
||||
## API Reference
|
||||
|
||||
### Core Functions
|
||||
|
||||
- `discord.init(application_id)` - Initialize the Discord client
|
||||
- `discord.run_callbacks()` - Process Discord callbacks (call regularly)
|
||||
- `discord.shutdown()` - Disconnect and clean up
|
||||
- `discord.get_status()` - Get connection status: "not_initialized", "disconnected", "connecting", "connected", "ready", "reconnecting"
|
||||
- `discord.is_authenticated()` - Check if authenticated
|
||||
- `discord.connect()` - Connect to Discord
|
||||
- `discord.disconnect()` - Disconnect from Discord
|
||||
|
||||
### Callback Registration
|
||||
|
||||
- `discord.on_status_changed(callback)` - Status change callback: `function(status, error, detail)`
|
||||
- `discord.on_log(callback, min_severity)` - Log callback: `function(message, severity)`
|
||||
|
||||
### Authentication
|
||||
|
||||
- `discord.get_default_scopes()` - Get default OAuth2 scopes
|
||||
- `discord.authorize(callback)` - Start OAuth2 flow: `function(success, code, redirect_uri, error)`
|
||||
- `discord.get_token(code, redirect_uri, callback)` - Exchange code for token: `function(result)`
|
||||
- `discord.update_token(type, token, callback)` - Update access token: `function(success, error)`
|
||||
- `discord.refresh_token(refresh_token, callback)` - Refresh access token: `function(result)`
|
||||
|
||||
### User API
|
||||
|
||||
- `discord.get_current_user()` - Get current user object
|
||||
- `discord.get_user(user_id)` - Get user by ID
|
||||
|
||||
User object properties:
|
||||
- `id` - BigInt user ID
|
||||
- `username` - Username
|
||||
- `display_name` - Display name
|
||||
- `global_name` - Global name (optional)
|
||||
- `avatar_url` - Avatar URL
|
||||
- `status` - "online", "offline", "idle", "dnd"
|
||||
- `is_provisional` - Is provisional account
|
||||
|
||||
### Relationships API
|
||||
|
||||
- `discord.get_relationships()` - Get all relationships (friends list)
|
||||
- `discord.get_friends_count()` - Get number of friends
|
||||
|
||||
Relationship object properties:
|
||||
- `id` - BigInt user ID
|
||||
- `type` - "none", "friend", "blocked", "pending_incoming", "pending_outgoing"
|
||||
- `user` - User object
|
||||
|
||||
### Rich Presence API
|
||||
|
||||
- `discord.update_rich_presence(activity, callback)` - Update rich presence
|
||||
- `discord.clear_rich_presence()` - Clear rich presence
|
||||
|
||||
Activity object properties:
|
||||
- `type` - "playing", "streaming", "listening", "watching", "competing"
|
||||
- `state` - Current state text
|
||||
- `details` - Details text
|
||||
- `large_image` - Large image key
|
||||
- `large_text` - Large image tooltip
|
||||
- `small_image` - Small image key
|
||||
- `small_text` - Small image tooltip
|
||||
- `start_timestamp` - Start time (Unix ms)
|
||||
- `end_timestamp` - End time (Unix ms)
|
||||
- `party_id` - Party ID
|
||||
- `party_size` - Current party size
|
||||
- `party_max` - Max party size
|
||||
- `join_secret` - Join secret for invites
|
||||
|
||||
## Example Usage
|
||||
|
||||
```javascript
|
||||
var discord = use("discord")
|
||||
var config = use("config")
|
||||
|
||||
// Initialize
|
||||
discord.init(config.APPLICATION_ID)
|
||||
|
||||
// Set up callbacks
|
||||
discord.on_status_changed(function(status, error, detail) {
|
||||
log.console(`Status: ${status}`)
|
||||
if (status == "ready") {
|
||||
var user = discord.get_current_user()
|
||||
log.console(`Logged in as: ${user.display_name}`)
|
||||
|
||||
// Set rich presence
|
||||
discord.update_rich_presence({
|
||||
type: "playing",
|
||||
state: "In Game",
|
||||
details: "Level 5"
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
// Start auth flow
|
||||
discord.authorize(function(success, code, redirect_uri, error) {
|
||||
if (success) {
|
||||
discord.get_token(code, redirect_uri, function(result) {
|
||||
if (result.success) {
|
||||
discord.update_token("bearer", result.access_token, function(ok) {
|
||||
if (ok) discord.connect()
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
// Main loop - call regularly
|
||||
function tick() {
|
||||
discord.run_callbacks()
|
||||
$_.delay(tick, 16)
|
||||
}
|
||||
tick()
|
||||
```
|
||||
|
||||
## Running Tests
|
||||
|
||||
```bash
|
||||
cd cell-discord
|
||||
cell test
|
||||
```
|
||||
|
||||
## Running Example
|
||||
|
||||
```bash
|
||||
cd cell-discord
|
||||
cell examples/discord_example
|
||||
```
|
||||
Reference in New Issue
Block a user