Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
S
strolly
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
dnns01
strolly
Commits
1b895a76
Commit
1b895a76
authored
4 years ago
by
dnns01
Browse files
Options
Downloads
Patches
Plain Diff
Role commands and Stats use embeds now as well.
parent
dd4d79d6
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
fernuni-bot.py
+60
-54
60 additions, 54 deletions
fernuni-bot.py
with
60 additions
and
54 deletions
fernuni-bot.py
+
60
−
54
View file @
1b895a76
...
...
@@ -38,20 +38,6 @@ def get_key(role):
return
key
def
get_guild_roles
():
"""
Get all roles that are available at the guild.
"""
guild
=
get_guild
()
if
guild
is
not
None
:
roles
=
{}
for
role
in
guild
.
roles
:
role_key
=
get_key
(
role
)
if
role_key
is
not
None
:
roles
[
role_key
]
=
role
return
roles
return
None
def
get_member
(
user
):
if
type
(
user
)
is
discord
.
Member
:
return
user
...
...
@@ -62,13 +48,26 @@ def get_member(user):
return
None
def
get_members_roles
(
user
):
"""
Get all roles assigned to a member.
"""
def
get_roles
(
user
=
None
):
"""
Get all roles assigned to a member, or all roles available on the discord server
(in both cases only roles are returned, that are defined in roles.json).
"""
roles_list
=
[]
roles_dict
=
{}
member
=
get_member
(
user
)
if
member
is
not
None
:
return
member
.
roles
return
None
if
user
is
not
None
:
member
=
get_member
(
user
)
if
member
is
not
None
:
roles_list
=
member
.
roles
else
:
guild
=
get_guild
()
if
guild
is
not
None
:
roles_list
=
guild
.
roles
for
role
in
roles_list
:
role_key
=
get_key
(
role
)
if
role_key
is
not
None
:
roles_dict
[
role_key
]
=
role
return
roles_dict
def
get_reaction
(
reactions
):
...
...
@@ -92,7 +91,7 @@ async def send_dm(user, message, embed=None):
@bot.command
(
name
=
"
help
"
)
async
def
fu
_help
(
ctx
):
async
def
cmd
_help
(
ctx
):
"""
Send help message as DM
"""
help_file
=
open
(
HELP_FILE
,
mode
=
'
r
'
)
...
...
@@ -101,49 +100,54 @@ async def fu_help(ctx):
await
send_dm
(
ctx
.
author
,
""
,
embed
=
embed
)
@bot.command
(
name
=
"
all-roles
"
)
async
def
fu_all_roles
(
message
):
"""
Send all available roles that can be assigned to a member by this bot as DM
"""
def
get_role_embed
(
title
,
roles
):
"""
Returns an embed that represents all the roles that are passed to this function
"""
embed
=
discord
.
Embed
(
title
=
title
,
description
=
"
Bei jeder Rolle siehst du oben in Fett den Key der Rolle und
"
"
darunter den Namen der Rolle
"
,
color
=
19607
)
embed
.
add_field
(
name
=
"
\u200B
"
,
value
=
"
\u200B
"
,
inline
=
False
)
roles
=
get_guild_roles
()
answer
=
"
Verfügbare Rollen:
\n
"
for
key
,
role
in
roles
.
items
():
answer
+=
f
'
[
{
key
}
]
{
role
.
name
}
\n
'
embed
.
add_field
(
name
=
key
,
value
=
role
.
name
,
inline
=
False
)
await
send_dm
(
message
.
author
,
answer
)
return
embed
@bot.command
(
name
=
"
my
-roles
"
)
async
def
fu_my
_roles
(
message
):
"""
Send
the roles
assigned to a member as DM
.
"""
@bot.command
(
name
=
"
all
-roles
"
)
async
def
cmd_all
_roles
(
message
):
"""
Send
all available roles that can be
assigned to a member
by this bot
as DM
"""
my_roles
=
get_members_roles
(
message
.
author
)
answer
=
"
Dir zugewiesene Rollen:
\n
"
roles
=
get_roles
()
embed
=
get_role_embed
(
"
Alle verfügbaren Rollen
"
,
roles
)
await
send_dm
(
message
.
author
,
""
,
embed
=
embed
)
if
my_roles
is
not
None
:
for
role
in
my_roles
:
key
=
get_key
(
role
)
if
key
is
not
None
:
answer
+=
f
'
[
{
key
}
]
{
role
.
name
}
\n
'
await
send_dm
(
message
.
author
,
answer
)
@bot.command
(
name
=
"
my-roles
"
)
async
def
cmd_my_roles
(
message
):
"""
Send the roles assigned to a member as DM.
"""
roles
=
get_roles
(
message
.
author
)
embed
=
get_role_embed
(
"
Dir zugewiesene Rollen
"
,
roles
)
await
send_dm
(
message
.
author
,
""
,
embed
=
embed
)
@bot.command
(
name
=
"
add-roles
"
)
async
def
fu
_add_roles
(
ctx
,
*
args
):
async
def
cmd
_add_roles
(
ctx
,
*
args
):
if
len
(
args
)
>
0
:
await
modify_roles
(
ctx
,
True
,
args
)
@bot.command
(
name
=
"
remove-roles
"
)
async
def
fu
_remove_roles
(
ctx
,
*
args
):
async
def
cmd
_remove_roles
(
ctx
,
*
args
):
if
len
(
args
):
await
modify_roles
(
ctx
,
False
,
args
)
@bot.command
(
name
=
"
add-role
"
)
@commands.is_owner
()
async
def
fu
_add_role
(
ctx
,
key
,
role
):
async
def
cmd
_add_role
(
ctx
,
key
,
role
):
assignable_roles
[
key
]
=
role
roles_file
=
open
(
ROLES_FILE
,
mode
=
'
w
'
)
json
.
dump
(
assignable_roles
,
roles_file
)
...
...
@@ -154,7 +158,7 @@ async def fu_add_role(ctx, key, role):
await
send_dm
(
ctx
.
author
,
f
"
Fehler beim Hinzufügen der Rolle
{
role
}
"
)
def
fu_
load_roles
():
def
load_roles
():
global
assignable_roles
roles_file
=
open
(
ROLES_FILE
,
mode
=
'
r
'
)
assignable_roles
=
json
.
load
(
roles_file
)
...
...
@@ -168,7 +172,7 @@ async def modify_roles(ctx, add, args):
if
guild
is
not
None
:
member
=
get_member
(
ctx
.
author
)
roles
=
get_
guild_
roles
()
roles
=
get_roles
()
for
key
in
args
:
if
key
in
roles
:
role
=
roles
[
key
]
...
...
@@ -187,7 +191,7 @@ async def modify_roles(ctx, add, args):
@bot.command
(
name
=
"
link
"
)
async
def
fu
_link
(
message
):
async
def
cmd
_link
(
message
):
"""
Sends link to invite others to Discord server in Chat.
"""
await
message
.
channel
.
send
(
'
Benutze bitte folgenden Link, um andere Studierende auf unseren Discord einzuladen:
'
...
...
@@ -195,28 +199,30 @@ async def fu_link(message):
@bot.command
(
name
=
"
stats
"
)
async
def
fu
_stats
(
message
):
async
def
cmd
_stats
(
message
):
"""
Sends stats in Chat.
"""
guild
=
get_guild
()
members
=
await
guild
.
fetch_members
().
flatten
()
roles
=
get_
guild_
roles
()
answer
=
f
'
Wir haben aktuell
{
len
(
members
)
}
Mitglieder auf diesem Server.
'
answer
+=
f
'
\n\n
Verteilt auf Rollen:
'
roles
=
get_roles
()
answer
=
f
''
embed
=
discord
.
Embed
(
title
=
"
Statistiken
"
,
description
=
f
'
Wir haben aktuell
{
len
(
members
)
}
Mitglieder auf diesem Server, verteilt auf folgende Rollen:
'
)
for
key
,
role
in
roles
.
items
():
role_members
=
role
.
members
if
len
(
role_members
)
>
0
and
not
role
.
name
.
startswith
(
"
Farbe
"
):
answer
+=
f
'
\n
{
role
.
name
}
:
{
len
(
role_members
)
}
Mitglieder
'
embed
.
add_field
(
name
=
role
.
name
,
value
=
f
'
{
len
(
role_members
)
}
Mitglieder
'
,
inline
=
False
)
no_role
=
0
for
member
in
members
:
# ToDo Search for study roles only!
if
len
(
member
.
roles
)
==
1
:
no_role
+=
1
answer
+=
f
'
\n\n
{
no_role
}
Mitglieder ohne Rolle
'
embed
.
add_field
(
name
=
"
\u200B
"
,
value
=
"
\u200b
"
,
inline
=
False
)
embed
.
add_field
(
name
=
"
Mitglieder ohne Rolle
"
,
value
=
str
(
no_role
),
inline
=
False
)
await
message
.
channel
.
send
(
answer
)
await
message
.
channel
.
send
(
answer
,
embed
=
embed
)
async
def
pin_message
(
message
):
...
...
@@ -240,7 +246,7 @@ async def unpin_message(message):
@bot.event
async
def
on_ready
():
print
(
"
Client started!
"
)
fu_
load_roles
()
load_roles
()
@bot.event
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment