rendered paste bodyusing System;
using System.Collections.Generic;
using System.Text;
using Injections = Project2Q.SDK.Injections;
using Project2Q.SDK.UserSystem;
using Project2Q.SDK.ChannelSystem;
using Project2Q.SDK;
using Project2Q.SDK.ModuleSupport;
//TODO ~_~
//1. Check if Already on list when adding user
//2. Check if adduser is in the right order >:( (Invoke Exception bullshit otherwise)
//3. Fix Delete Method (currently returning null or some bullshit)
namespace UserManagment {
public class Main : IModuleCreator {
public override void Initialize() {
mp.RegisterEvent( "ChannelMessage", new CrossAppDomainDelegate( ChannelMethod ) );
}
//Try debugging it again.
//WTF
public Injections.ChannelMessageEvent channelMessageData;
public Project2Q.SDK.IRCEvents.ParseReturns parseReturns;
[Project2Q.SDK.UserSystem.PrivelegeRequired(Priveleges.UserSystem)]
public void ChannelMethod() {
string text = channelMessageData.text;
string user = channelMessageData.channelUser.InternalUser.Nickname;
string channel = channelMessageData.channel.Name;
if ( text.Equals( "?users" ) ) {
returns = new string[] {
"PRIVMSG " + channel + " :" + GetUsers(),
};
return;
}
else if ( text.StartsWith( "?adduser" ) ) {
string[] splits = text.Split( ' ' );
if ( splits.Length != 4 ) {
returns = new string[] {
":" + user + " NOTICE " + user + " :Not enough arguments to add user.",
};
return;
}
//Say you want the format: ?adduser nick privflags userlevel
// [0] [1] [2] [3]
char[] privs = splits[2].ToCharArray();
uint userlevel = uint.Parse( splits[3] );
UserCollection uc = (UserCollection)mp.RequestVariable( ModuleProxy.Request.UserCollection );
User u = null;
try {
u = uc[splits[1]];
}
catch ( KeyNotFoundException ) {
returns = new string[] {
":" + user + " NOTICE " + user + " :could not add " + splits[1],
};
return;
}
RegisteredUser ru = new RegisteredUser();
ru.HostList.Add( u.CurrentHost );
ru.Privegeles.NumericalLevel = userlevel;
foreach ( char c in privs ) {
if ( c-'A' >= 0 && c-'A' <= 57 )
ru.Privegeles.AddPriveleges(c);
}
uc.AddRegisteredUser( ru );
uc.Authenticate( u );
returns = new string[] {
":" + user + " NOTICE " + user + " :Added user " + splits[1] + " to the userlist!",
};
return;
}
else if ( text.StartsWith( "?deluser" ) ) {
string[] splits = text.Split( ' ' );
if ( splits.Length != 2 ) {
returns = new string[] {
":" + user + " NOTICE " + user + " :Not enough arguments to delete user.",
};
return;
}
UserCollection uc = (UserCollection)mp.RequestVariable( ModuleProxy.Request.UserCollection );
User client = null;
Channel c = channelMessageData.channel;
if ( c.HasNick( splits[1] ) ) {
try {
client.CurrentHost.Username = splits[1];
uc.RemoveRegisterdUser( client );
}
catch ( KeyNotFoundException ) {
returns = new string[] {
":" + user + " NOTICE " + user + " :Could not delete " + splits[1],
};
return;
}
}
returns = new string[] {
":" + user + " NOTICE " + user + " :Deleted " + splits[1],
};
}
}
public string GetUsers() {
UserCollection uc = (UserCollection)mp.RequestVariable( ModuleProxy.Request.UserCollection );
StringBuilder sb = new StringBuilder();
foreach ( User u in uc ) {
sb.Append( u.Nickname + ":(" + u.CurrentHost + ")" );
if ( u.UserAttributes != null ) {
sb.Append( ":{" );
sb.Append( u.UserAttributes.Privegeles.NumericalLevel.ToString() );
sb.Append( "|" );
sb.Append( u.UserAttributes.Privegeles.GetPrivelegeString() );
sb.Append( "}:[" );
foreach ( IRCHost irch in u.UserAttributes.HostList ) {
sb.Append( irch.FullHost );
sb.Append( ", " );
}
sb.Append( "], " );
}
}
return sb.ToString();
}
}
}