From upstream https://github.com/get-got/discord-downloader-go.git
Modified for arm64
https://github.com/get-got/discord-downloader-go.git
|
2 жил өмнө | |
---|---|---|
.gitattributes | 4 жил өмнө | |
.gitignore | 2 жил өмнө | |
.travis.yml | 2 жил өмнө | |
Dockerfile | 2 жил өмнө | |
LICENSE | 4 жил өмнө | |
README.md | 2 жил өмнө | |
commands.go | 2 жил өмнө | |
common.go | 2 жил өмнө | |
config.go | 2 жил өмнө | |
database.go | 2 жил өмнө | |
discord.go | 2 жил өмнө | |
downloads.go | 2 жил өмнө | |
go.mod | 2 жил өмнө | |
go.sum | 2 жил өмнө | |
handlers.go | 2 жил өмнө | |
history.go | 2 жил өмнө | |
main.go | 2 жил өмнө | |
parse.go | 2 жил өмнө | |
regex.go | 2 жил өмнө | |
vars.go | 2 жил өмнө |
Discord Downloader <i>Go</i>
<a href="https://travis-ci.com/get-got/discord-downloader-go" alt="Travis Build">
<img src="https://travis-ci.com/get-got/discord-downloader-go.svg?branch=master" />
</a>
<a href="https://hub.docker.com/r/getgot/discord-downloader-go" alt="Docker Build">
<img src="https://img.shields.io/docker/cloud/build/getgot/discord-downloader-go" />
</a>
<a href="https://goreportcard.com/report/github.com/get-got/discord-downloader-go" alt="Go Report Card">
<img src="https://goreportcard.com/badge/github.com/get-got/discord-downloader-go" />
</a>
<br>
<a href="https://github.com/get-got/discord-downloader-go/releases" alt="All Releases">
<img src="https://img.shields.io/github/downloads/get-got/discord-downloader-go/total?label=all-releases&logo=GitHub" />
</a>
<a href="https://hub.docker.com/r/getgot/discord-downloader-go" alt="Docker Pulls">
<img src="https://img.shields.io/docker/pulls/getgot/discord-downloader-go?label=docker-pulls&logo=Docker" />
</a>
<a href="https://github.com/get-got/discord-downloader-go/releases/latest" alt="Latest Release">
<img src="https://img.shields.io/github/downloads/get-got/discord-downloader-go/latest/total?label=latest-release&logo=GitHub" />
</a>
<br>
<a href="https://discord.gg/6Z6FJZVaDV">
<img src="https://img.shields.io/discord/780985109608005703?logo=discord"alt="Join the Discord">
</a>
<a href="https://discord.com/invite/6Z6FJZVaDV">
<b>Need help? Have suggestions? Join the Discord server!</b>
</a>
<br/><br/>
<a href="https://github.com/get-got/discord-downloader-go/releases/latest">
<b>DOWNLOAD LATEST RELEASE</b>
</a>
Operating System | Architectures ( ? = available but untested ) |
---|---|
Windows | amd64, arm64 (?), armv7/6/5 (?), 386 (?) |
Linux | amd64, arm64, armv7/6/5, risc-v64 (?), mips64/64le (?), s390x (?), 386 (?) |
Darwin (Mac) | amd64 (?), arm64 (?) |
FreeBSD | amd64 (?), arm64 (?), armv7/6/5 (?), 386 (?) |
OpenBSD | amd64 (?), arm64 (?), armv7/6/5 (?), 386 (?) |
NetBSD | amd64 (?), arm64 (?), armv7/6/5 (?), 386 (?) |
This project is a cross-platform cli single-file executable program to interact with a Discord Bot (genuine bot application or user account, limitations apply to both respectively) to locally download files posted from Discord in real-time as well as a full archive of old messages. It can download any directly sent Discord attachments or linked files and supports fetching highest possible quality files from specific sources (see list below). It also supports very extensive settings configurations and customization, applicable globally or per-server/category/channel/user. Tailor the bot to your exact needs and runtime environment. See the Features list below for the full list. See the List of Settings below for a settings breakdown. See Getting Started or anything else in the table of contents right under this to learn more!
<b>Originally a fork of <a href="https://github.com/Seklfreak/discord-image-downloader-go">Seklfreak's <i>discord-image-downloader-go</i></a></b>
The original project was abandoned, for a list of differences and why I made an independent project, <a href="#differences-from-seklfreaks-discord-image-downloader-go--why-i-made-this"><b>see below</b></a>
Read more in Discord Trust & Safety Team's Official Statement...
While this project works for user logins, I do not reccomend it as you risk account termination. If you can, use a proper Discord Bot user for this program.
NOTE: This only applies to real User Accounts, not Bot users. This program currently works for either.
Now that that's out of the way...
Commands are used as ddg <command> <?arguments?>
(unless you've changed the prefix)
Command | Arguments? | Description
--- | --- | ---
help
, commands
| No | Lists all commands.
ping
, test
| No | Pings the bot.
info
| No | Displays relevant Discord info.
status
| No | Shows the status of the bot.
stats
| No | Shows channel stats.
history
| SEE HISTORY SECTION | (BOT AND SERVER ADMINS ONLY) Processes history for old messages in channel.
exit
, kill
, reload
| No | (BOT ADMINS ONLY) Exits the bot (or restarts if using a keep-alive process manager).
emojis
| Optionally specify server IDs to download emojis from; separate by commas | (BOT ADMINS ONLY) Saves all emojis for channel.
Confused? Try looking at the step-by-step list.
Depending on your purpose for this program, there are various ways you can run it.
discord-downloader-go.exe settings2
or similar to run multiple instances sharing a database with separate settings files)/root/settings.json
/root/database
/root/
X:\My Folder
to /root/My Folder
You can either create a settings.json
following the examples & variables listed below, or have the program create a default file (if it is missing when you run the program, it will make one, and ask you if you want to enter in basic info for the new file).
"credentials"
section. (SEE BELOW)"admins"
list of the settings. (SEE BELOW)"adminChannels"
. (SEE BELOW)"channels"
section. (SEE BELOW)
"token"
setting. Remove the lines for "username"
and "password"
or leave blank (""
). To create a Bot User, go to discord.com/developers/applications and create a New Application
. Once created, go to Bot
and create. The token can be found on the Bot
page. To invite to your server(s), go to OAuth2
and check "bot"
, copy the url, paste into browser and follow prompts for adding to server(s)."username"
and "password"
settings. Remove the line for "token"
or leave blank (""
)."token"
setting. Remove the lines for "username"
and "password"
or leave blank (""
). Your account token can be found by opening the browser console / dev tools / inspect element
> Network
tab > filter for "library"
and reload the page if nothing appears. Assuming there is an item that looks like the below screenshot, click it and find "Authorization" within the "Request Headers" section
of the Headers tab. The random text is your token.Read Message
permissions in the server(s) of your designated channel(s).Send Message
permissions in the server(s) of your designated channel(s). If executing commands via an Admin Channel, the bot will only need Send Message
permissions for that channel, and that permission will not be required for the source channel.Read Message History
permissions in the server(s) of your designated channel(s).Bot
category, and ensure Message Content Intent
is enabled.Developer Mode
in Discord settings under Appearance
.Copy ID
.Copy ID
.Copy ID
.href="/channels/@me/CHANNEL_ID_HERE"
. Using this ID in place of a normal channel ID should work perfectly fine.I've been a user of Seklfreak's project since ~2018 and it's been great for my uses, but there were certain aspects I wanted to expand upon, one of those being customization of channel configuration, and other features like message reactions upon success, differently formatted statuses, etc. If some aspects are rudimentary or messy, please make a pull request, as this is my first project using Go and I've learned everything from observation & Stack Overflow.
This guide is to show you how to make the bot go through all old messages in a channel and catalog them as though they were being sent right now, in order to download them all.
If no channel IDs are specified, it will try and use the channel ID for the channel you're using the command in.
Argument / Flag | Details |
---|---|
channel ID(s) | One or more channel IDs, separated by commas if multiple. |
all |
Use all available registered channels. |
cancel or stop |
Stop downloading history for specified channel(s). |
list or status |
Output running history jobs in Discord & program. |
--since=YYYY-MM-DD |
Will process messages sent after this date. |
--since=message_id |
Will process messages sent after this message. |
--before=YYYY-MM-DD |
Will process messages sent before this date. |
--before=message_id |
Will process messages sent before this message. |
Order of arguments does not matter
ddg history
ddg history cancel
ddg history all
ddg history stop all
ddg history 000111000111000
ddg history 000111000111000, 000222000222000
ddg history 000111000111000,000222000222000,000333000333000
ddg history 000111000111000, 000333000333000 cancel
ddg history 000111000111000 --before=000555000555000
ddg history 000111000111000 --since=2020-01-02
ddg history 000111000111000 --since=2020-10-12 --before=2021-05-06
ddg history 000111000111000 --since=000555000555000 --before=2021-05-06
ddg history status
ddg history list
I tried to make the configuration as user friendly as possible, though you still need to follow proper JSON syntax (watch those commas). Most settings are optional and will use default values or be unused if missing from your settings file.
When initially launching the bot it will create a default settings file if you do not create your own settings.json
manually. All JSON settings follow camelCase format.
If you have a config.ini
from Seklfreak's discord-image-downloader-go, it will import settings if it's in the same folder as the program.
The bot accepts .json
or .jsonc
for comment-friendly json.
TODO: UNDER CONSTRUCTION
THIS IS THE MAIN SETTINGS GROUP, ALL OF THIS WOULD GO INSIDE THE MAIN { }
FILE BRACKETS.
SETTING KEY | TYPE | DEFAULT | DESCRIPTION | EXAMPLE |
---|---|---|---|---|
credentials | credentials group |
See credentials group below. |
||
admins | array of strings |
None | Discord IDs of users to use admin commands. |
"admins": [ "0", "0" ], |
adminChannels | array of adminChannel groups |
None | See adminChannel group below. |
|
discordLogLevel | int (whole number) | 0 (errors) | 0 = Errors, 1 = Warning, 2 = Informational, 3 = Debug |
"discordLogLevel": 2, |
debug | boolean (true or false) |
false | Enables extra output for narrowing down problems. | "debug": true, |
messageOutput | boolean (true or false) |
true | Enables discord message output. | "messageOutput": true, |
TODO: UNDER CONSTRUCTION
[MAJOR].[MINOR].[PATCH]
https://semver.org/