Compare commits
7 Commits
2e07bbb710
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| ea1ad60f1c | |||
| 1290ddd9a2 | |||
|
|
835dafbd77 | ||
| 22a32841d5 | |||
| c08d3a9fab | |||
| 37c02dea3c | |||
| 31726089b6 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
drastikbot
|
||||||
8
flake.lock
generated
8
flake.lock
generated
@@ -17,16 +17,16 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1638239011,
|
"lastModified": 1739758141,
|
||||||
"narHash": "sha256-AjhmbT4UBlJWqxY0ea8a6GU2C2HdKUREkG43oRr3TZg=",
|
"narHash": "sha256-uq6A2L7o1/tR6VfmYhZWoVAwb3gTy7j4Jx30MIrH0rE=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "a7ecde854aee5c4c7cd6177f54a99d2c1ff28a31",
|
"rev": "c618e28f70257593de75a7044438efc1c1fc0791",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "21.11",
|
"ref": "nixos-24.11",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/21.11";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
|
||||||
|
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
};
|
};
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
supportedSystems = with flake-utils.lib.system; [ x86_64-linux i686-linux aarch64-linux ];
|
supportedSystems = with flake-utils.lib.system; [ x86_64-linux i686-linux aarch64-linux ];
|
||||||
in {
|
in {
|
||||||
overlay = final: prev: {
|
overlay = final: prev: {
|
||||||
drastikbot = prev.python3Packages.buildPythonApplication rec {
|
drastikbot = prev.python311.pkgs.buildPythonApplication rec {
|
||||||
pname = "drastikbot";
|
pname = "drastikbot";
|
||||||
version = "v2.1";
|
version = "v2.1";
|
||||||
|
|
||||||
@@ -29,8 +29,8 @@
|
|||||||
cp -r $src/src/* $out
|
cp -r $src/src/* $out
|
||||||
|
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
makeWrapper ${prev.python3}/bin/python3 $out/bin/drastikbot \
|
makeWrapper ${prev.python311}/bin/python3 $out/bin/drastikbot \
|
||||||
--prefix PYTHONPATH : ${with prev.python3Packages; makePythonPath [requests beautifulsoup4]} \
|
--prefix PYTHONPATH : ${with prev.python311.pkgs; makePythonPath [requests beautifulsoup4]} \
|
||||||
--add-flags "$out/drastikbot.py"
|
--add-flags "$out/drastikbot.py"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -74,13 +74,13 @@ def parser():
|
|||||||
" already exists.")
|
" already exists.")
|
||||||
conf_dir = str(path.expanduser().resolve())
|
conf_dir = str(path.expanduser().resolve())
|
||||||
else:
|
else:
|
||||||
path = Path('~/.drastikbot').expanduser()
|
path = Path('./drastikbot').expanduser()
|
||||||
if not path.is_dir():
|
if not path.is_dir():
|
||||||
try:
|
try:
|
||||||
path.mkdir(parents=True, exist_ok=False)
|
path.mkdir(parents=True, exist_ok=False)
|
||||||
except FileExistsError:
|
except FileExistsError:
|
||||||
sys.exit("[Error] Making configuration directory at"
|
sys.exit("[Error] Making configuration directory at"
|
||||||
" '~/.drastikbot' failed. Another file with that name"
|
" './drastikbot' failed. Another file with that name"
|
||||||
" already exists.")
|
" already exists.")
|
||||||
conf_dir = str(path)
|
conf_dir = str(path)
|
||||||
|
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ class Drastikbot():
|
|||||||
# statement below.
|
# statement below.
|
||||||
if multipart:
|
if multipart:
|
||||||
time.sleep(self.var.msg_delay)
|
time.sleep(self.var.msg_delay)
|
||||||
tr = m_len - 2 - len(' '.join(cmds).encode('utf-8')) - remainder
|
tr = m_len - 2 - len(' '.join(cmds).encode('utf-8')) - remainder - 1
|
||||||
t = text.encode('utf-8')[tr:]
|
t = text.encode('utf-8')[tr:]
|
||||||
self.send(cmds, t)
|
self.send(cmds, t)
|
||||||
|
|
||||||
|
|||||||
@@ -44,14 +44,14 @@ class Module:
|
|||||||
def main(i, irc):
|
def main(i, irc):
|
||||||
values = i.msg_nocmd.split('d')
|
values = i.msg_nocmd.split('d')
|
||||||
if len(values) != 2:
|
if len(values) != 2:
|
||||||
irc.notice(i.channel, f"Usage: {i.cmd_prefix}roll <n>d<s>")
|
irc.privmsg(i.channel, f"Usage: {i.cmd_prefix}roll <n>d<s>")
|
||||||
return
|
return
|
||||||
|
|
||||||
n_dice = int(values[0])
|
n_dice = int(values[0])
|
||||||
n_sides = int(values[1])
|
n_sides = int(values[1])
|
||||||
|
|
||||||
if n_dice > 1000 or n_sides > 1000:
|
if n_dice > 1000 or n_sides > 1000:
|
||||||
irc.notice(i.channel, f"{i.nickname}: Too many dice or sides given.")
|
irc.privmsg(i.channel, f"{i.nickname}: Too many dice or sides given.")
|
||||||
return
|
return
|
||||||
|
|
||||||
results = [random.randint(1, n_sides) for i in range(n_dice)]
|
results = [random.randint(1, n_sides) for i in range(n_dice)]
|
||||||
|
|||||||
@@ -84,13 +84,13 @@ def is_hidden(i, module_name):
|
|||||||
|
|
||||||
def module_checks(i, irc, module):
|
def module_checks(i, irc, module):
|
||||||
if module not in i.modules.keys():
|
if module not in i.modules.keys():
|
||||||
irc.notice(i.channel, f"Help: `{module}' is not an imported module.")
|
irc.privmsg(i.channel, f"Help: `{module}' is not an imported module.")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
module_bl = irc.var.modules_obj["blacklist"][module]
|
module_bl = irc.var.modules_obj["blacklist"][module]
|
||||||
if module_bl and i.channel in module_bl:
|
if module_bl and i.channel in module_bl:
|
||||||
irc.notice(i.channel, f"Help: This module has been disabled.")
|
irc.privmsg(i.channel, f"Help: This module has been disabled.")
|
||||||
return False
|
return False
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass # No blacklist, move on
|
pass # No blacklist, move on
|
||||||
@@ -98,14 +98,14 @@ def module_checks(i, irc, module):
|
|||||||
try:
|
try:
|
||||||
module_wl = irc.var.modules_obj["whitelist"][module]
|
module_wl = irc.var.modules_obj["whitelist"][module]
|
||||||
if module_wl and i.channel not in module_wl:
|
if module_wl and i.channel not in module_wl:
|
||||||
irc.notice(i.channel, f"Help: This module has been disabled.")
|
irc.privmsg(i.channel, f"Help: This module has been disabled.")
|
||||||
return False
|
return False
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass # No whitelist, move on
|
pass # No whitelist, move on
|
||||||
|
|
||||||
module_c = i.modules[module].Module()
|
module_c = i.modules[module].Module()
|
||||||
if not hasattr(module_c, "manual"):
|
if not hasattr(module_c, "manual"):
|
||||||
irc.notice(i.channel, "Help: This module does not have a manual.")
|
irc.privmsg(i.channel, "Help: This module does not have a manual.")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
@@ -128,7 +128,7 @@ def module_help(i, irc, module):
|
|||||||
|
|
||||||
t = f"\x0311{module}\x0F: {commands}{info}"
|
t = f"\x0311{module}\x0F: {commands}{info}"
|
||||||
t += f" | Use: {i.cmd_prefix}help <module> <command> for command info."
|
t += f" | Use: {i.cmd_prefix}help <module> <command> for command info."
|
||||||
irc.notice(i.channel, t)
|
irc.privmsg(i.channel, t)
|
||||||
|
|
||||||
|
|
||||||
def command_help(i, irc, module, command):
|
def command_help(i, irc, module, command):
|
||||||
@@ -138,17 +138,17 @@ def command_help(i, irc, module, command):
|
|||||||
module_c = i.modules[module].Module()
|
module_c = i.modules[module].Module()
|
||||||
|
|
||||||
if not hasattr(module_c, "commands"):
|
if not hasattr(module_c, "commands"):
|
||||||
irc.notice(i.channel, "Help: This module does not provide commands.")
|
irc.privmsg(i.channel, "Help: This module does not provide commands.")
|
||||||
return
|
return
|
||||||
|
|
||||||
if "bot_commands" not in module_c.manual:
|
if "bot_commands" not in module_c.manual:
|
||||||
irc.notice(i.channel, "Help: No manual entry for this command ")
|
irc.privmsg(i.channel, "Help: No manual entry for this command ")
|
||||||
return
|
return
|
||||||
|
|
||||||
command_manual = module_c.manual["bot_commands"]
|
command_manual = module_c.manual["bot_commands"]
|
||||||
|
|
||||||
if command not in command_manual:
|
if command not in command_manual:
|
||||||
irc.notice(i.channel, "Help: No manual entry for this command.")
|
irc.privmsg(i.channel, "Help: No manual entry for this command.")
|
||||||
return
|
return
|
||||||
|
|
||||||
command_entry = command_manual[command]
|
command_entry = command_manual[command]
|
||||||
@@ -172,7 +172,7 @@ def command_help(i, irc, module, command):
|
|||||||
|
|
||||||
t = " | ".join(t)
|
t = " | ".join(t)
|
||||||
t = f"{command}: {t}"
|
t = f"{command}: {t}"
|
||||||
irc.notice(i.channel, t)
|
irc.privmsg(i.channel, t)
|
||||||
|
|
||||||
|
|
||||||
def module_list(i, irc):
|
def module_list(i, irc):
|
||||||
@@ -185,7 +185,7 @@ def module_list(i, irc):
|
|||||||
m = itertools.chain(m1, m2)
|
m = itertools.chain(m1, m2)
|
||||||
t = "Help: " + ", ".join(sorted(m))
|
t = "Help: " + ", ".join(sorted(m))
|
||||||
t += f" | Use: {i.cmd_prefix}help <module> for module info."
|
t += f" | Use: {i.cmd_prefix}help <module> for module info."
|
||||||
irc.notice(i.channel, t)
|
irc.privmsg(i.channel, t)
|
||||||
|
|
||||||
|
|
||||||
def main(i, irc):
|
def main(i, irc):
|
||||||
@@ -198,6 +198,6 @@ def main(i, irc):
|
|||||||
command_help(i, irc, argv[0], argv[1])
|
command_help(i, irc, argv[0], argv[1])
|
||||||
else:
|
else:
|
||||||
m = f"Usage: {i.cmd_prefix}help [module] [command]"
|
m = f"Usage: {i.cmd_prefix}help [module] [command]"
|
||||||
irc.notice(i.channel, m)
|
irc.privmsg(i.channel, m)
|
||||||
else:
|
else:
|
||||||
module_list(i, irc)
|
module_list(i, irc)
|
||||||
|
|||||||
@@ -37,5 +37,5 @@ def main(i, irc):
|
|||||||
elif i.cmd == "source":
|
elif i.cmd == "source":
|
||||||
if not i.msg_nocmd or i.msg_nocmd == irc.var.curr_nickname:
|
if not i.msg_nocmd or i.msg_nocmd == irc.var.curr_nickname:
|
||||||
m = ("\x0305,01drastikbot + drastikbot_modules + dailybuild_modules\x0F"
|
m = ("\x0305,01drastikbot + drastikbot_modules + dailybuild_modules\x0F"
|
||||||
" : \\x0311https://git.neet.dev/zuckerberg/dailybuild_modules\\x0F")
|
" : \x0311https://git.neet.dev/zuckerberg/dailybuild_modules\x0F")
|
||||||
irc.privmsg(i.channel, m)
|
irc.privmsg(i.channel, m)
|
||||||
|
|||||||
@@ -154,11 +154,11 @@ def listquotes(channel, nickname, dbc, irc):
|
|||||||
data += m
|
data += m
|
||||||
|
|
||||||
if not rest and not sbn:
|
if not rest and not sbn:
|
||||||
irc.notice(nickname, f"{logo}: No results.")
|
irc.privmsg(nickname, f"{logo}: No results.")
|
||||||
else:
|
else:
|
||||||
pomf_url = listquotes_pomf(data)
|
pomf_url = listquotes_pomf(data)
|
||||||
m = f"{logo}: Your quotes can be found here: {pomf_url}"
|
m = f"{logo}: Your quotes can be found here: {pomf_url}"
|
||||||
irc.notice(nickname, m)
|
irc.privmsg(nickname, m)
|
||||||
|
|
||||||
|
|
||||||
def listquotes_pomf(data):
|
def listquotes_pomf(data):
|
||||||
|
|||||||
@@ -212,4 +212,4 @@ def main(i, irc):
|
|||||||
# Truncate the output just in case. We can't send 512 bytes anyway.
|
# Truncate the output just in case. We can't send 512 bytes anyway.
|
||||||
m = m[:512]
|
m = m[:512]
|
||||||
|
|
||||||
irc.notice(receiver, m)
|
irc.privmsg(receiver, m)
|
||||||
|
|||||||
@@ -269,6 +269,7 @@ def twitter(url):
|
|||||||
hosts_d = {
|
hosts_d = {
|
||||||
"youtube.com": youtube,
|
"youtube.com": youtube,
|
||||||
"youtu.be": youtube,
|
"youtu.be": youtube,
|
||||||
|
"m.youtube.com": youtube,
|
||||||
"lainchan.org": lainchan,
|
"lainchan.org": lainchan,
|
||||||
"i.imgur.com": imgur,
|
"i.imgur.com": imgur,
|
||||||
"imgur.com": imgur,
|
"imgur.com": imgur,
|
||||||
|
|||||||
Reference in New Issue
Block a user