This repository has been archived by the owner on Aug 23, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 71
/
Copy pathidlerpg.py
86 lines (69 loc) · 2.31 KB
/
idlerpg.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
"""
The IdleRPG Discord Bot
Copyright (C) 2018-2021 Diniboy and Gelbpunkt
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
"""
import logging
import sys
import orjson
# Ugly patch to use orjson globally
sys.modules["json"] = orjson
import asyncio
import os
import discord
import uvloop
from classes.bot import Bot
from classes.logger import file_handler, stream
if len(sys.argv) != 6:
print(
f"Usage: {sys.executable} idlerpg.py [shard_ids] [shard_count] [cluster_id]"
" [cluster_count] [cluster_name]"
)
sys.exit(1)
# Set the timezone to UTC
os.environ["TZ"] = "UTC"
# Sharding stuff
shard_ids = orjson.loads(sys.argv[1])
shard_count = int(sys.argv[2])
cluster_id = int(sys.argv[3])
cluster_count = int(sys.argv[4])
cluster_name = sys.argv[5]
# Configure intents
intents = discord.Intents.none()
intents.guilds = True
intents.members = True
intents.messages = True
intents.reactions = True
async def main() -> None:
async with Bot(
case_insensitive=True,
status=discord.Status.idle,
description="The one and only IdleRPG bot for discord",
shard_ids=shard_ids,
shard_count=shard_count,
cluster_id=cluster_id,
cluster_count=cluster_count,
cluster_name=cluster_name,
intents=intents,
chunk_guilds_at_startup=False, # discord.py defaults this to True if members intent is enabled
) as bot:
await bot.start(bot.config.bot.token)
if __name__ == "__main__":
log = logging.getLogger()
log.setLevel(logging.INFO)
log.addHandler(stream)
log.addHandler(file_handler(cluster_id))
try:
with asyncio.Runner(loop_factory=uvloop.new_event_loop) as runner:
runner.run(main())
except KeyboardInterrupt:
pass